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

Sro*_*rol 23 javascript javascript-events google-chrome-extension

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

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

document.querySelector("SOME_SELECTOR").click();
Run Code Online (Sandbox Code Playgroud)

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

MouseEvent {isTrusted: false}
Run Code Online (Sandbox Code Playgroud)

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

Iva*_*nos 9

您可以使用调试器接口注入受信任的事件.

chrome.debugger.attach(target, "1.2", function() {
    chrome.debugger.sendCommand(target, "Input.dispatchMouseEvent", arguments)
})
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如何在 Chrome 扩展程序的后台脚本上实现该功能? (3认同)
  • 伟大的!这也适用于通过 `Input.dispatchKeyEvent` 发送受信任的密钥事件。 (2认同)
  • @diofeher,这是一个有效的实现:https://github.com/Sentero-esp12/IsTrusted-event-Debugger-API (2认同)

Shi*_*lly 3

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

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

可能仍然有办法解决这个问题,正如本主题中针对 Firefox 所提到的:Firefox 扩展生成的事件“可信”吗?

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