Javascript 重写IE8的e.preventDefault()
IE8中的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
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原因在答案中。