首页 > 解决方案 > 如何拦截推文按钮点击事件?

问题描述

我正在开发一个浏览器扩展,我想拦截推文按钮点击事件,如下图所示:

一个

我设法得到这样的元素节点:

document.querySelector('div[data-testid="tweetButton"]')

这就是我试图做的:

  1. 覆盖节点的“click”和“onclick”函数
  2. 覆盖节点的“点击”事件监听器,即tweetButton.addEventListener("click", function() {})
  3. 去掉“点击”事件监听器,即tweetButton.removeEventListener("click", function() {})
  4. 对“mousedown”和“onmousedown”重复 #1、#2 和 #3
  5. 通过添加全局侦听document.addEventListener器并检查选择器。回调被触发,但 XHR 仍然通过,即使我做了event.preventDefault()并且event.stopImmediatePropagation().

也许事件侦听器所附加的不是这个对象,但在 HTML 中它具有“按钮”角色,所以它应该是那个。

我可以通过监听 Ajax 请求来实现相同的目标吗?

标签: javascripttwitteronclickevent-handlingdom-events

解决方案


毕竟,似乎解决方案 #2 是正确的:

let tweetButton = document.querySelector('div[data-testid="tweetButton"]');
tweetButton.addEventListener("click", function(event) {
  event.preventDefault();
  event.stopImmediatePropagation();
});

你可以在这里找到开源代码


推荐阅读