gpt4 book ai didi

javascript - 知道事件的先前处理程序是否返回 false。 defaultPrevented 在 IE < 9 中?

转载 作者:行者123 更新时间:2023-11-28 02:03:55 25 4
gpt4 key购买 nike

我放了一个全局模态“加载中,请稍候”<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() ,这样事件就不会冒泡,如 event.preventDefault() vs. return false 中所述。 .

但我无法控制那部分,所以:有没有办法(最好是非 jquery+跨浏览器)知道事件处理程序先前执行的结果(在较低级别)?

如果没有,我想我只能避免显示模态 <div>每当组件的 onclick包含 return false .

这是一个JSFiddle用于测试。

更新

下面 Bergi 的回答正是我要搜索的内容。然而,defaultPrevented IE < 9 似乎不受支持。在 IE < 9 中是否有等效/解决方法来实现该功能?

最佳答案

您可以检查 (window.event ? event.defaultPrevented : eventData.isDefaultPrevented()) == false 以捕获没有返回 的传播事件 假的

关于javascript - 知道事件的先前处理程序是否返回 false。 defaultPrevented 在 IE < 9 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com