【发布时间】:2019-08-16 05:32:24
【问题描述】:
在问这个问题之前,我对事件捕获和冒泡做了一些研究。但是,它仍然没有解决我的问题。
我正在为这个网站写一个用户脚本。基本上,我无法更改网站的代码,只能更改自己的用户脚本代码。在我的脚本获取事件之前,网站有窗口捕获事件。
这是一个简化的例子:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
//I cannot change this code (it is part of the webpage):
$("p")[0].addEventListener("click",function(){
alert("p");
});
$(window)[0].addEventListener("click",function(){
alert("window");
},true);
//I can change this code (it is part of my userscript):
$("body")[0].addEventListener("click",function(){
alert("body: I want to come first");
});
});
</script>
</head>
<body>
<p>Click Here</p>
</body>
</html>
编辑:澄清
对于这个例子,我希望“body”警报首先出现,而不禁用“window”或“p”警报。所以我希望结果是:
“主体”、“窗口”、“p”
或
“正文”、“p”、“窗口”
【问题讨论】:
-
那么,你的问题到底是什么?
-
也没明白,哈哈。您想阻止警报吗?
-
警报只是用来演示哪个事件首先触发。我希望身体的点击事件首先触发,所以基本上,我希望它首先提醒身体
标签: javascript events event-handling dom-events