首页 > js 如何对html已注册的事件进行拦截

js 如何对html已注册的事件进行拦截

使用js原生事件或Jquery方式注册的事件,如何进行拦截?
希望代码能精简些,最好不用相关的js库。

提供一种方法, 代码如下:

<input type="button" id="hello" value="hello" />
<script type="text/javascript" src="jquery.min.js"></script>
<script>

    $('#hello').click(function(){
        alert('org...');
    });


    var hello = $('#hello'),//要拦截的按钮
        newBtn = hello.clone();//复制一个新的出来

    hello.hide();//隐藏原来的
    newBtn.insertBefore(hello);//将新的这个插到原来的那个元素的前面

    //给伪造的这个按钮绑定相同的事件(此处演示的是click事件)
    newBtn.click(function(){
        //拦截时执行的代码
        if(confirm('fake click, continue?')){//如果 允许通过
            //隐藏新创建出来的这个按钮
            newBtn.hide();
            //显示原来的, 触发相应的事件, 然后再隐藏它
            hello.show().trigger('click').hide();
            //显示新创建的, 以便下次 click 时候, 再触发 拦截的代码
            newBtn.show();
        }
    });
</script>

如果需要原生的请将jQuery中相应的方法改为原生对应的代码即可.

但上面的方法有一些缺陷, 并不完美, 只是提供一种思路, 期待其他高手更高明的回复.


不考虑兼容就是。
window.addEventListener('click',function() { event.stopPropagation()},true);

【热门文章】
【热门文章】