javascript - JQuery PreventDefault 和 IE8 说明

标签 javascript jquery internet-explorer-8 preventdefault

我一直在努力理解为什么有时 IE8 不喜欢 PreventDefault 以及为什么有时它似乎没问题(没有错误)。从我读到的内容来看,包括这里的 SO 是 jquery 中的事件被规范化,因此 preventDefault 将始终与 jQuery 事件一起存在。然而,当 ie8 需要以下解决方法时,常规的 javascript 事件绑定(bind)是:

event.preventDefault ? event.preventDefault() : event.returnValue = false

这是正确的吗?

因此,如果您使用 jQuery .click .bind .on 等来处理事件,则 PreventDefault 不会在 IE8 中导致错误,例如:

$('a').on('click', function(e) {
    e.preventDefault();    //no need for e.preventDefault ? e.preventDefault() : e.returnValue = false as jquery event?
    //code
});

但是,如果它是一个常规的 Javascript 事件,例如 onclick,那么需要解决方法吗?

希望这是有道理的。

谢谢

最佳答案

是的,您的理解听起来是正确的。此外,如果您使用的是“DOM0”事件处理程序(例如 someElement.onclick = function(e) { ... }),则有一种更简单的方法可以防止浏览器默认行为起作用在所有支持事件的浏览器中:return false

var someElement = document.getElementById("someElementId");
someElement.onclick = function(e) {
    // Do some stuff
    return false;
};

但是,在这种情况下,事件不会传递给 IE <= 8 中的事件处理程序,您必须改为从 window.event 获取它。

关于javascript - JQuery PreventDefault 和 IE8 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033728/

相关文章:

javascript - 通过Selenium获取跨浏览器的scrollheight

javascript - jQuery 在 IE8 单选按钮中导致隐形项目符号

用于创建 html 选择菜单的 javascript 代码未在 IE8 中填充

javascript - 使用 Material UI 进行 React 钩子(Hook)

javascript - 调试 css ipad

javascript - 如何将 html 文件加载到 jquery 选项卡中

javascript - 使用 jQuery Flot 在点击时隐藏系列

javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...) ?

javascript - 更改时的 Angular 选择值不更新

javascript - 如何使用 Greasemonkey 按 ID 号突出显示?