博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

bridge2006

天行健,君子以自强不息。
  bridge2006.cublog.cn

关于作者
姓名:bridge
职业:IT
年龄:28
位置:湖北
个性介绍:天行人健,君子以自强不息.
|| << >> ||
我的分类


ie与firefox下javascript传递函数handle区别!
今天在习作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下都能顺利得到想要的结果.

发表于: 2006-11-20,修改于: 2006-11-21 19:33,已浏览485次,有评论0条 推荐 投诉


网友评论
 发表评论