我设置了一个全局模式“正在加载,请稍候”<div>
在一个应用程序中。它每次都会显示<a>
or <input type="button">
被点击。这是通过分配<body>
an onclick
事件处理程序在onload
,以便在事件冒泡时执行:
<body onload="setup()">
<!-- No control over what will be here -->
</body>
<script>
function setup() {
document.getElementsByTagName('body')[0].onclick = clickFunc;
}
function clickFunc(eventData) {
var clickedElement = (window.event) ? event.srcElement : eventData.target;
if (someConditions) {
document.getElementById('modal').style.display = "block";
}
}
</script>
现在,我在标记中有一些组件(我无法控制)return false
在他们的onclick
s。这会导致模式弹出窗口显示,并在出现时停留在那里confirm()
并且用户否认。处理这个问题的正确方法可能是preventDefault()
,这样事件就不会冒泡,如中所述event.preventDefault() 与 return false https://stackoverflow.com/q/1357118/851811.
但我无法控制该部分,所以:有没有办法(最好是非jquery+跨浏览器)来了解事件处理程序先前执行的结果(在较低级别)?
如果没有,我想我就不得不避免显示模式<div>
每当组件的onclick
包含return false
.
这里有一个JSFiddle http://jsfiddle.net/wTzu7/3/供测试用。
UPDATE
下面伯吉的答案就是我一直在寻找的。然而,defaultPrevented
IE
你可以检查一下(window.event ? event.defaultPrevented : eventData.isDefaultPrevented()) == false
捕获传播的事件not回false
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)