为Internet Explorer编码javascript时要避免哪些常见错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我即将开始编写一个新的,JavaScript重的网站,但在开始之前,我想通过事先知道这些怪癖是什么来尽量减少在Internet Explorer中的调试时间。我不打算过分担心IE6。

在其他浏览器中正常工作的JavaScript代码中避免常见的错误/区别是什么?

提问于
用户回答回答于

这里有一个微妙之处:如果你的站点有多个框架(或iframe),并且你有时候在框架之间有Javascript代码通信,IE(6和7,不太确定8和9)对“血统”非常挑剔,的Javascript对象,甚至没有任何DOM引用。这意味着如果你从一个框架传递几乎任何类型的Javascript对象(字符串和数字通常都是可以的,但是即使Date实例也会导致我在过去出现问题),如果在某个时间点之后来源框架用新页面更新,如果目标页面试图与该通信对象混淆,则它会得到异常。对于这种情况,Firefox非常圆润,但是当IE垃圾收集旧页面时,它不喜欢引用页面创建的Javascript对象。

用户回答回答于

如果您通过JavaScript直接分配事件处理程序,event不会自动提供。

myElement.onclick = function(e) {
    alert(typeof e); // undefined
}

解决方法是拉window.event

myElement.onclick = function(e) {
    e = e || window.event;
    alert(typeof e); // this is ok now
}

如果您是直接在元素上的事件处理程序,则可以event手动提供参考。

<input type="text" onclick="myMethod(event);"></input>

这是跨浏览器,很好,如果你必须走这条路线。

使用attachEvent设置事件处理程序将该event对象作为参数自动提供给该方法。

扫码关注云+社区