我一直试图理解为什么有时候IE8不喜欢PreventDefault,为什么有时它似乎没问题(没有错误)。从我所读到的,包括在这里的是jquery中的事件被规范化,因此preventDefault将始终与jQuery事件一起存在。但是,常规的javascript事件绑定是指ie8需要以下解决方法:
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则需要解决方法吗?
希望这是有道理的。
由于
答案 0 :(得分:1)
是的,您的理解听起来是正确的。此外,如果您正在使用“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
获取它。