知道事件的前一个处理程序是否返回 false。 IE 中的 defaultPrevented < 9?

问题描述 投票:0回答:1

我在应用程序中放置了一个全局模式“正在加载,请稍候”

<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()
,这样事件就不会冒泡,如
javascript html event-handling onclick event-bubbling
1个回答
1
投票

您可以检查

(window.event ? event.defaultPrevented : eventData.isDefaultPrevented()) == false
以捕获具有 not 返回的传播事件
false
.

© www.soinside.com 2019 - 2024. All rights reserved.