javascript - 防止触发所有 JavaScript 事件

标签 javascript

我正在研究像 javascript 元素选择器这样的 Firebug ,但无法弄清楚如何阻止所有 JavaScript 事件在单击时触发。 firebug lite 插件 ( https://getfirebug.com/firebuglite ) 正在做我想要的,但无法弄清楚他们在做什么。 任何帮助将不胜感激。

塞纳里奥:

  • 用户选择元素检查器
  • 用户点击元素
  • 不应触发 onClick、mousedown、mouseup

我试过以下但没有成功:

function stopEvents(el){

    for(var key in window) {
        if (key.indexOf("on") == 0)
            el.addEventListener(key.substr(2), stop, false);
    }
}

function StopEvent(pE)
{
    stopEvents(pE);

    if (!pE)
     if (window.event)
       pE = window.event;
     else
       return;
  if (pE.cancelBubble != null)
    pE.cancelBubble = true;
  if (pE.stopPropagation)
     pE.stopPropagation();
  if (pE.preventDefault)
     pE.preventDefault();
  if (window.event)
     pE.returnValue = false;
  if (pE.cancel != null)
     pE.cancel = true;
}

编辑:

$('.somediv').on("click", function(e){
     //Stop bubbling and propagation
     StopEvent(e);

     //EDIT: Still not working with this
     e.stopImmediatePropagation();

     //RUN only my code here
     console.log("My code is running still");

     return false;
});

如果有另一个库比如 YUI 将事件绑定(bind)到同一个 DOM 元素。它会在我的之后触发那里的事件。我似乎无法劫持事件来阻止这种情况的发生。

编辑:

我不能使用禁用,因为我需要能够触发我的事件。如果我执行以下操作,我将无法触发上述事件。我也无法附加父事件,因为 DOM 将停止触发该节点的树上的所有事件。

$('.somediv').on("mouseover", function(e){
     $(this).attr("disabled", "disabled"); 
});

编辑:

我要禁用的事件在我的脚本运行之前就已创建。这些事件可以是任何 javascript 库,例如 YUI、Dojo、jQuery、JavaScript 等...

最佳答案

禁用页面上的所有事件非常容易。困难的部分是在需要时恢复它们。

document.body.innerHTML = document.body.innerHTML;

这将通过用它的“原始”副本替换 DOM 来有效地删除绑定(bind)到 DOM 节点的所有事件。

大多数时候用户甚至不会注意到重绘。

关于javascript - 防止触发所有 JavaScript 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19105360/

相关文章:

javascript - jQuery 日期选择器首先选择年份,然后选择月份

JavaScript/Coffeescript 求和对象

javascript - jQuery Accordion 不起作用

javascript - 如何使表格中的整行像ngtable(angularjs)中的超链接(在新选项卡中打开等)一样

javascript - 如何使用 Bootstrap 和 Drupal 覆盖 JS 文件?

javascript - 使用vuejs加载页面时如何从firebase获取数据?

javascript - 防止错误 : getaddrinfo ENOTFOUND at GetAddrInfoReqWrap. onlookup 后应用程序崩溃

javascript - 在 Ember 中使用普通链接

javascript - 使用纯 JavaScript 将电话号码格式化为用户类型

javascript - react native : Prevent animation from blocking app?