Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重写IE8的e.preventDefault()_Javascript_Internet Explorer 8_Cross Browser - Fatal编程技术网

Javascript 重写IE8的e.preventDefault()

Javascript 重写IE8的e.preventDefault(),javascript,internet-explorer-8,cross-browser,Javascript,Internet Explorer 8,Cross Browser,IE8中的e.preventDefault()有问题,因为它导致以下错误: 对象不支持属性或方法“preventDefault” 正如在其他线程和Google上看到的那样,这可以通过使用e.returnValue作为回退来避免。在我的情况下,我正在使用一个插件,我不想在发生这种情况的每个部分都修改它。我想通过访问对象的原型来重写事件.preventDefault函数,但我不确定如何继续,我也找不到任何相关信息 这似乎是最明显、最优雅的解决方案。这可能实现吗?这是我通常做的: if (!Even

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

对象不支持属性或方法“preventDefault”
正如在其他线程和Google上看到的那样,这可以通过使用
e.returnValue
作为回退来避免。在我的情况下,我正在使用一个插件,我不想在发生这种情况的每个部分都修改它。我想通过访问对象的原型来重写
事件.preventDefault
函数,但我不确定如何继续,我也找不到任何相关信息


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

这是我通常做的:

if (!Event.prototype.preventDefault)
    Event.prototype.preventDefault = function() {
        try {this.keyCode = 0;} catch (e) {}
        this.returnValue = false;
    }
嗯,这是最明显的解决办法。我记不清确切的时间,但有时需要将
keyCode
属性设置为
0
,以正确防止键盘事件


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

如果您知道如何操作对象的原型,请尝试一下,并告诉我们会发生什么。如果你不知道,那么先研究一下这个主题。我只是不知道正确的对象名称,但下面的答案解决了这个问题;)它起作用了——很明显,最好先检查
preventDefault
是否存在,以避免在支持它的浏览器上覆盖内置版本。我知道,duh:)。但是有人问这个问题是因为有人不确定如何修改原型,所以最好向他们完整地展示如何正确地修改原型。@user2497157原因在答案中。