为IE8重写e.preventDefault()

时间:2013-06-27 08:58:15

标签: javascript internet-explorer-8 cross-browser

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

Object doesn't support property or method `preventDefault` 

正如其他主题和Google上所见,使用e.returnValue作为后备可以避免这种情况。在我的情况下,我正在使用一个插件,我不想在发生这种情况的每个部分进行修改。我想通过访问对象的原型重写Event.preventDefault函数,但我不知道如何继续这里,我也无法找到任何相关信息。

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

1 个答案:

答案 0 :(得分:3)

这就是我通常做的事情:

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

嗯,最明显的解决方案。我无法准确记住何时,但有时您需要将keyCode属性设置为0以正确防止键盘事件。

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