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 閱讀(995) 評論(1)  編輯  收藏 所屬分類: DHTML和JAVASCRIPT 技術

          評論

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

          主站蜘蛛池模板: 和硕县| 盐城市| 余庆县| 安宁市| 巩义市| 安达市| 泽库县| 长葛市| 定边县| 凤台县| 保山市| 临江市| 潍坊市| 苍梧县| 丁青县| 米脂县| 中卫市| 兴和县| 同江市| 宝山区| 清徐县| 静宁县| 玉田县| 通海县| 南康市| 兴安盟| 沈丘县| 乌兰察布市| 吉安县| 景谷| 祁阳县| 正镶白旗| 施秉县| 靖江市| 儋州市| 灵武市| 金山区| 桐城市| 青田县| 资溪县| 招远市|