2

e.preventDefault()在 IE8 中遇到问题,因为它导致以下错误:

Object doesn't support property or method `preventDefault` 

正如在其他线程和谷歌上看到的那样,这可以通过使用e.returnValue作为后备来避免。在我的情况下,我正在使用一个插件,我不想在发生这种情况的每个部分进行修改。我正在考虑通过访问对象的原型来重写Event.preventDefault函数,但我不确定如何在这里继续,我也找不到任何关于此的信息。

这似乎是最明显和最优雅的解决方案。这有可能实现吗?

4

1 回答 1

3

这是我通常做的:

if (!Event.prototype.preventDefault)
    Event.prototype.preventDefault = function() {
        try {this.keyCode = 0;} catch (e) {}
        this.returnValue = false;
    }

嗯,这最明显的解决方案。我不记得什么时候了,但有时您需要将keyCode属性设置0为正确防止键盘事件。

注意:这仅适用于 IE8 ,因为 IE7 没有Event构造函数。

于 2013-06-27T09:02:15.633 回答