Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 知道事件的前一个处理程序是否返回false。在IE<;9?_Javascript_Html_Event Handling_Onclick_Event Bubbling - Fatal编程技术网

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

Javascript 知道事件的前一个处理程序是否返回false。在IE<;9?,javascript,html,event-handling,onclick,event-bubbling,Javascript,Html,Event Handling,Onclick,Event Bubbling,我在应用程序中设置了一个全局模式“加载,请稍候”。每次出现时都会显示它 但我无法控制这一部分,所以:有没有一种方法(最好是非jquery+跨浏览器)可以知道事件处理程序先前执行的结果(在较低级别) 如果没有,我想只要当组件的onclick包含return false时,我就必须避免显示模式 这是一个测试的例子 使现代化 贝基下面的答案就是我一直在寻找的。但是,defaultPrevented在IE

我在应用程序中设置了一个全局模式“加载,请稍候”。每次出现
时都会显示它

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

如果没有,我想只要当组件的
onclick
包含
return false
时,我就必须避免显示模式

这是一个测试的例子

使现代化
贝基下面的答案就是我一直在寻找的。但是,
defaultPrevented
在IE<9中似乎不受支持。在IE<9中是否有一个等效的/解决方法来实现这一点?

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

在可单击元素上是否有任何通用模式来识别它们,或者您无法控制的可单击元素的任何常见模式?除了
clickedElement.onclick.toString().indexOf('return false')之外,没有其他模式可供查找-1
。遗憾的是,这不是很推荐,因为函数反编译不是有效ECMAScript实现的要求,我的意思是,标准不要求浏览器在执行某个函数时为您提供函数的字符串转换。toString()。。。我所能想到的就是查看event.target,如果nodeName不是“A”,请查看parentNode、parentNode、parentNode等,直到其nodeName是“A”,然后检查onclick是否为null,或者直到到达主体。但是如果你想在你自己的链接元素中使用onclick,这是行不通的。。。还有什么可以帮助我们的建议吗?;)谢谢你的评论,@xel。在
someConditions
中,我已经在从事件目标中查找层次结构,以查找
是我要查找的。但是,IE<9似乎不支持
defaultPrevented
。谢谢您的回答。我在中尝试过,但是
isDefaultPrevented
(顺便说一句,它似乎不是函数)总是
未定义的。另外,谢谢你告诉我关于
defaultPrevented
:)呃,对非W3标准浏览器(你知道我的意思)-奇怪的是,它不适用于该浏览器(这里是IE7)。还尝试了
returnValue
,如前所述,但该值在冒泡后似乎不可用。似乎只有在中才支持
defaultPrevented
。我暂时不接受,以防出现另一个答案,但这就是我一直在寻找的答案。
<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>