我在应用程序中放置了一个全局模式“正在加载,请稍候”
<div>
。每次单击 <a>
或 <input type="button">
时都会显示。这是通过在 <body>
中为 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
。这会导致模态弹出窗口显示,并在出现confirm()
且用户拒绝时停留在那里。处理这个问题的正确方法可能是 preventDefault()
,这样事件就不会冒泡,如 您可以检查
(window.event ? event.defaultPrevented : eventData.isDefaultPrevented()) == false
以捕获具有 not 返回的传播事件 false
.