【问题标题】:How to trigger an ‘isTrusted=true’ click event using JavaScript?如何使用 JavaScript 触发“isTrusted=true”点击事件?
【发布时间】:2016-04-23 13:21:47
【问题描述】:

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

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

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

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

MouseEvent {isTrusted: false}

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

【问题讨论】:

    标签: javascript google-chrome-extension dom-events


    【解决方案1】:

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

    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

    【讨论】:

    • 太棒了!这也适用于通过Input.dispatchKeyEvent 发送受信任的密钥事件。
    • 如何在 Chrome 扩展的后台脚本上实现它?
    • @diofeher,这是一个有效的实现:github.com/Sentero-esp12/IsTrusted-event-Debugger-API
    • 一个问题..你在哪里执行这个chrome.debugger,因为我打开控制台时没有看到它
    【解决方案2】:

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

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

    可能仍有办法解决这个问题,如本主题中针对 Firefox 所述:Are events generated by Firefox extension 'trusted'?

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

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多