在IE11中取消JavaScript事件

时间:2015-03-23 13:25:54

标签: javascript asp.net javascript-events

我有一些历史代码使用 event.returnValue = false 来防止CR通过onkeydown事件在ASP.NET中导致回发:

onkeydown = "if (event.keyCode == 13) {event.returnValue = false; event.cancel = true;}"

我已将代码移植到我的新开发PC上,上面的代码停止工作,即按CR在文本框中执行回发。

我花了很长时间来追踪它。我的历史应用程序是所以旧,它必须在IE11中以兼容模式运行,所以我的旧PC已将localhost添加到兼容站点列表中。

我的新PC没有localhost所以我的新应用程序运行在" native" IE11模式。

除此之外:我知道有一种不同的方法可以通过简单地返回false来实现:

onkeydown = "return event.keyCode != 13"

我的问题更多的是为什么 event.returnValue = false 在不兼容模式下无法在IE11中工作,即对此代码的JavaScript事件系统进行了哪些更改不再有效了?

1 个答案:

答案 0 :(得分:2)

event.returnValue是一种IE专有机制,现已弃用。自IE 9以来,IE已逐渐脱离旧的专有API并逐步采用Web标准。

标准以及IE 11的工作原理是event.preventDefault

如果您想覆盖所有基础,可以继续在代码中包含旧API,并使用preventDefault的功能检测:

onkeydown = "if (event.keyCode == 13) {
                event.returnValue = false; 
                event.cancel = true;
                if (event.preventDefault) {
                    event.preventDefault();
                }
             }"