emu in blogjava

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

          跟蹤了一番代碼,確定了問題出現在:copyChildNodes 和 moveChildNodes這兩個函數的這一行上:

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

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

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

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

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

          更安全的方法是使用in關鍵字

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

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

          相關的討論見:

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




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

          評論

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

          主站蜘蛛池模板: 格尔木市| 郧西县| 桃园市| 和硕县| 延边| 北碚区| 闽侯县| 剑阁县| 分宜县| 道孚县| 得荣县| 大理市| 体育| 阳曲县| 辛集市| 花莲县| 河曲县| 张北县| 西青区| 广宗县| 龙胜| 凌云县| 双鸭山市| 伊吾县| 炉霍县| 通州市| 马龙县| 吉安县| 平泉县| 津市市| 泽州县| 泰和县| 荔波县| 宁晋县| 天台县| 泸溪县| 民乐县| 临漳县| 晋州市| 奈曼旗| 右玉县|