我一直在努力理解为什么有时 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/