我正在尝试编写自己的函数来阻止事件。
这是我的
function disableEvent (element, event, useCapture) {
function preventer (event) {
event = event || window.event;
event.preventDefault() ? event.preventDefault() : (event.returnValue = false);
event.stopPropagation() ? event.stopPropagation() : (event.cancelBubble = true);
}
if (typeof useCapture == 'undefined') useCapture = false;
if (element.addEventListener)
element.addEventListener(event.toLowerCase().substr(2), preventer, useCapture)
else if (element.attachEvent) {
var result = element.attachEvent(event,preventer);
return result;
}
else {
alert("Try to change or update your browser")
}
}
但它在IE浏览器上不起作用。它在第4行显示错误。感谢您对此任务的帮助。最诚挚的问候,艾哈迈德。
答案 0 :(得分:2)
当试图测试函数是否存在时,你写道:
event.stopPropagation() ? event.stopPropagation() : (event.cancelBubble = true);
让我们分析一下。 event.stopPropagation()
是对没有参数的event.stopPropagation
的调用,它不会返回任何内容,这意味着undefined
。所以你将面临一个问题:
如果stopPropagation
不存在,您仍然在调用它。它会产生错误,这就是你的情况。
要避免此问题,您必须检查该功能是否存在:
event.stopPropagation ? event.stopPropagation() : (even.cancelBubble = true);
它应该正常工作。与preventDefault
相同。