javascript - 尝试编写跨浏览器事件禁用js功能。怎么了?

标签 javascript dom-events

我正在尝试编写自己的函数来阻止事件。

这是我所拥有的:

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/

相关文章:

javascript - Backbone.js:如何在模型删除时解除事件绑定(bind)

javascript - 触发键盘事件,webkit 键盘事件不会触发

javascript - 如何阻止用户关闭 Javascript 中的窗口?

javascript - 当查找事件完成时运行函数

javascript - 关于 Function.prototype.bind() 的困惑

javascript - next-api-js 无法连接到near

javascript - 即使使用捕获阶段,OnDrop 事件目标也是子对象

javascript - Html 5 Canvas 图片库

javascript - iBooks 翻页效果在哪里以及如何编程?

javascript - jQuery 阻止 onmouseover 事件