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

Object doesn't support property or method `preventDefault`


正如其他线程和Google所见,可以通过使用e.returnValue作为后备来避免这种情况。在我的情况下,我使用的插件不想在发生这种情况的每个部分中进行修改。我当时正在考虑通过访问对象的原型来重写Event.preventDefault函数,但是我不确定如何进行此操作,也无法找到任何有关此信息。

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

最佳答案

这通常是我要做的:

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


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

注意:这仅在IE8中有效,因为IE7没有Event构造函数。

关于javascript - 重写IE8的e.preventDefault(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17338840/

10-13 02:52