1、對 HTML DOM 規(guī)范的支持,IE 除了支持標準的 API,還提供了 document.all() 這個便于使用的方法。但是這個方法完全可以使用標準的 getElementById() 來替代。 2、對 XML DOM,IE 提供了 selectSingleNode() 和 selectNodes() 兩個便于使用的方法,而 Mozilla 使用標準的 evaluate() 方法。解決的方法是在 Mozilla 中模擬 IE 的行為。IE 中的 XML DOM 是作為 ActiveX 插件的形式(打補丁的方式)提供的,Mozilla 則本身就支持 XML DOM。 3、IE 支持 XML Data Island,而 Mozilla 由于對 XML 有更好的支持,所以完全不需要提供 XML Data Island 這種機制。但是 Mozilla 可以模擬 IE 的 XML Data Island。 http://www.mozilla.org/xmlextras/xmldataislands/ 4、對于 XMLHTTP 的支持,IE 使用 ActiveX 插件實現(xiàn),Mozilla 則使用 XPCOM 組件實現(xiàn)。但是兩者的接口是相同的。 5、訪問本地文件系統(tǒng)的方法不同,IE 使用 ActiveX 插件,Mozilla 則使用 XPCOM 組件。 6、對于事件處理的機制完全不同,IE 采用“事件傳播”(“事件起泡”)方式,Mozilla 采用“事件捕捉”方式。 Mozilla 中的 selectSingleNode() 和 selectNodes(): if(isMozilla); { XMLDocument.prototype.selectSingleNode = function(tagname); { var result = this.evaluate(tagname, this, null, 0, null);; return result.iterateNext();; } //定義一個新的類以兼容 IE 中 selectNodes(); 的返回類型。 function __XMLNodes(result); { this.length = 0; this.pointer = 0; this.array = new Array();; var i = 0; while((this.array[i]=result.iterateNext(););!=null); i++; this.length = this.array.length; } XMLNodes.prototype.nextNode = function(); { this.pointer++; return this.array[pointer-1]; } XMLNodes.prototype.reset = function(); { this.pointer = 0; } XMLDocument.prototype.selectNodes = function(tagname); { var result = this.evaluate(tagname, this, null, 0, null);; var xns = new __XMLNodes(result);; return xns; } } |
|
來自: CrazyProgramm... > 《Html》