今天在习作DOM+XML时,抄了个例子如下,在ie下总是没有什么问题,但是在firefox上总得不到正常的结果,实在是令人费解,偶然看到一段代码,找到了解决方法,以并在firefox下与ie下都能正常运行。在ie下执行没有问题但是在firefox上执行出错的的代码如下:
function loadxml(handler) {
var url = "employees.xml";
if(document.implementation&&document.implementation.createDocument) {
var xmldoc = document.implementation.createDocument("", "", null);
xmldoc.onload = handler(xmldoc, url);
xmldoc.load(url);
}
else if(window.ActiveXObject) {
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = function() {
if(xmldoc.readyState == 4) handler(xmldoc, url);
}
xmldoc.load(url);
//alert("hello");
}
}
为了使firefox上也能正常运行,将上面标记为红色的代码修改如下:
xmldoc.onload = function () { handler(xmldoc, url); }
然后在ie及firefox下运行,都可以通过,firefox下对javascript与ie对javascript的控制严格,ie对javascript有较好的容错机制,在ie下xmldoc.onload = handler(xmldoc, url); xmldoc.onload即得到了事件句柄,但是在firefox下,需要将一个函数定义直接赋值给xmldoc.onload才行,因此为了在ie及firefox下都能顺利得到想要的结果.