如何使用 JavaScript 触发“isTrusted=true”点击事件?

IT技术 javascript google-chrome-extension dom-events
2021-03-10 06:56:43

我正在尝试使用 Chrome 扩展程序模拟用户点击和鼠标移动。

例如:
在我的内容脚本中有一个按钮点击。

document.querySelector("SOME_SELECTOR").click();

此行触发具有以下属性的单击事件:

MouseEvent {isTrusted: false}

如何触发 isTrusted 属性为 true 的 MouseEvent?

2个回答

您可以使用调试器接口注入可信事件。

chrome.debugger.attach(target, "1.2", function() {
    chrome.debugger.sendCommand(target, "Input.dispatchMouseEvent", arguments)
})

https://developer.chrome.com/extensions/debugger

https://chromedevtools.github.io/devtools-protocol/1-2/Input

一个问题..你在哪里执行这个chrome.debugger因为我在打开控制台时没有看到它
2021-04-17 06:56:43
@diofeher,这是一个有效的实现:github.com/Sentero-esp12/IsTrusted-event-Debugger-API
2021-04-21 06:56:43
伟大的!这也适用于通过Input.dispatchKeyEvent.
2021-05-11 06:56:43
如何在 Chrome 扩展程序的后台脚本上实现它?
2021-05-17 06:56:43

我不确定这是否可行,因为它是一个只读属性,它准确地表示您要伪造的内容,即事件是来自最终用户还是来自脚本。曾经存在基于浏览器的差异,(IE 曾经将所有事件视为受信任的事件),但我不知道是否仍然如此。

https://developer.mozilla.org/en-US/docs/Web/API/Event

可能仍然有解决此问题的方法,如本主题中针对 Firefox 所述:Firefox 扩展生成的事件是否“可信”?

但是您必须查看 chrome 文档以检查它们是否具有将事件委托回窗口的类似方法,因为它确实提到在某些情况下扩展事件是/可以被信任的。