使用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);