繁体   English   中英

jQuery首先触发keydown事件

[英]JQuery trigger a keydown event first

在问这个之前,我对事件捕获和冒泡进行了一些研究。 但是,它仍然不能解决我的问题。

我正在为该网站编写用户脚本。 基本上,我不能更改网站的代码,而只能更改自己的用户脚本的代码。 在我的脚本获取事件之前,网站上有捕获事件的窗口。

这是一个简化的示例:

<!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>

编辑:澄清
对于此示例,我希望“身体”警报优先出现,而不禁用“窗口”或“ p”警报。 所以我希望结果是:
“身体”,“窗口”,“ p”
要么
“身体”,“ p”,“窗口”

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("body")[0].addEventListener("click",function(){
    alert("body: I want to come first");
  });
  window.RemoveEventListener('click',alert,true);
  //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):

});
</script>
</head>
<body>

<p>Click Here</p>

</body>
</html>

您可以使用此功能,因为我已禁用了事件警报,并在script标签的开头添加了脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM