javascript - 暂时禁用所有 onclick 事件并将它们绑定(bind)回来

标签 javascript jquery cross-browser bookmarklet

如何禁用页面上的所有 onclick 事件,绑定(bind)我的自定义函数,并在执行后启用所有之前的事件?

我正在构建一个小书签,它应该适用于任何已加载的页面,并且我正在使用 jQuery 来处理我的自定义逻辑(页面在加载后进行 jquerified)。请注意,我无法控制绑定(bind)哪些事件以及何时绑定(bind)。

目前我发现的最佳稳定解决方案是取消绑定(bind)事件,通过自定义函数绑定(bind)以防止默认操作,然后重新加载页面。这可行,但我想避免重新加载。部分解决方法是重新加载页面并滚动到上一个位置(如何实现此效果?)。一些可能的解决方案会使用 iframe,但我宁愿避免这种情况。

最佳答案

在所有元素上放置一个 div 元素会更容易......类似于

CSS

.noclick {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 9999; /* or maybe higher */

    background-color: transparent;
}

jQuery

jQuery(document).ready(function() {
    jQuery('body').append('<div class="noclick" />');
});

关于javascript - 暂时禁用所有 onclick 事件并将它们绑定(bind)回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14056534/

相关文章:

jquery - PrettyPhoto 无法正常工作,控制台中没有错误

javascript - Jquery 点击菜单可以工作,但在 Safari 和大多数移动浏览器中完全透明

css - float :right behaves differently in chrome and safari when using internal style sheet instead of inline style

javascript - 如何在插件调用中插入点击功能?

javascript - 在 JS 中生成非常长的字符串(数十兆字节)的最有效方法

jquery - 需要一个 JQuery 插件来实现不显示年份,仅显示日期和月份的日期选择器

Jquery每一个问题

javascript - 如何以完美的网格样式将不同大小的 DIV float 到左侧?

javascript - 如何为 Firebug 创建扩展

html - 图像和html之间的颜色差异