emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          Sarissa 在winxp+sp2或者win2003+sp1上面的單元測試是無法全部通過的,在 testCopyChildNodes 和 testMoveChildNodes 兩個試例中報錯誤。

          跟蹤了一番代碼,確定了問題出現(xiàn)在:copyChildNodes 和 moveChildNodes這兩個函數(shù)的這一行上:

          if(ownerDoc.importNode && (!_SARISSA_IS_IE)) {

          這個javascript本身是沒有錯的,錯就錯在IE。最新版的IE補丁使IE支持Msxml2.DOMDocument.5.0和Msxml2.DOMDocument.4.0,這兩個ActiveX雖然沒有提供對importNode這個API的支持,但是卻內(nèi)部使用了這個API名字,并且沒有很好的包裝,導(dǎo)致在判斷ownerDoc.importNode 是否存在的時候居然拋了異常。

          解決方法之一,是利用邏輯短路原理,調(diào)整判斷邏輯

          if((!_SARISSA_IS_IE) && ownerDoc.importNode ) {

          這樣在IE上后面一個判斷就不會被執(zhí)行了。

          更安全的方法是使用in關(guān)鍵字

          if("importNode" in ownerDoc && (!_SARISSA_IS_IE)) {

          in關(guān)鍵字不會造成瀏覽器誤會我們要訪問importNode這個內(nèi)部API而拋異常,它只是很忠實的高速我們屬性是否存在。

          相關(guān)的討論見:

          https://sourceforge.net/forum/forum.php?thread_id=1237853&forum_id=256492




          posted on 2005-12-09 11:08 emu 閱讀(992) 評論(1)  編輯  收藏 所屬分類: DHTML和JAVASCRIPT 技術(shù)

          評論

          # re: 修正Sarissa 的一個小錯誤 2006-05-27 11:00
          我的是WinXP+SP2,測試能通過啊。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 吕梁市| 武夷山市| 三台县| 滨州市| 桑植县| 外汇| 礼泉县| 富裕县| 宁乡县| 大城县| 镇安县| 武川县| 泰州市| 万安县| 武鸣县| 天全县| 林周县| 镇原县| 潼关县| 宜春市| 临沧市| 达日县| 浏阳市| 浦东新区| 黑山县| 洛扎县| 宝兴县| 文安县| 炉霍县| 富阳市| 文昌市| 页游| 溆浦县| 林西县| 姚安县| 华池县| 台安县| 金溪县| 仙桃市| 雅江县| 彭州市|