我正在尝试编写自己的函数来阻止事件。
这是我所拥有的:
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浏览器上不起作用。它在第四行向我显示错误。感谢您对此任务的帮助。
最佳答案
当尝试测试函数是否存在时,您可以编写:
event.stopPropagation() ? event.stopPropagation() : (event.cancelBubble = true);
我们来分析一下。 event.stopPropagation()
是对不带参数的 event.stopPropagation
的调用,它不返回任何内容,这意味着未定义
。那么你会面临一个问题:
如果 stopPropagation
不存在,您仍在调用它。它会产生一个错误,这就是您的情况发生的情况。
为了避免这个问题,你必须检查该函数是否存在:
event.stopPropagation ? event.stopPropagation() : (even.cancelBubble = true);
它应该可以正常工作。与 preventDefault
相同。
关于javascript - 尝试编写跨浏览器事件禁用js功能。怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916963/