正在为IE8重写e.preventDefault()

Rewriting e.preventDefault() for IE8

本文关键字:preventDefault 重写 IE8      更新时间:2023-09-26

我在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构造函数。