javascript - 在 FireFox/Greasemonkey 中使用 JavaScript 发送全局击键

标签 javascript firefox firefox-addon greasemonkey mouseevent

我目前有一个 GM 脚本,可以捕获击键并以编程方式单击网页上的元素。但是,这仅在页面/选项卡具有焦点时才有效。有没有办法从第二页/标签捕获击键并将点击应用于第一页/标签上的元素?我知道我可以通过在 JavaScript 中打开它来获取对另一个窗口的引用。但是,如果该窗口位于另一个域中,我将无法访问该窗口中的元素。如果我不能使用 Greasemonkey 执行此操作,请提供有关如何将其作为扩展而不是 GM 脚本来完成的任何建议。实际上,这个问题更多的是如何在 GM 脚本中或作为扩展获取对打开的选项卡/窗口的引用。

这是我正在使用的示例代码:

function dispatchMouseEvent(target, event) {

  var e = document.createEvent("MouseEvents");
  e.initMouseEvent(event, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);  
  target.dispatchEvent(e);

};

function mouseClick(element) {

    dispatchMouseEvent(element, 'mouseover');
    dispatchMouseEvent(element, 'mousedown');
    dispatchMouseEvent(element, 'click');
    dispatchMouseEvent(element, 'mouseup');
}

最佳答案

根据设计,这不能在 JS 或 Greasemonkey 中完成。它曾经是一个巨大的安全漏洞。您必须编写一个扩展(附加组件)。

这里有一些我发现有用的附加资源:

关于javascript - 在 FireFox/Greasemonkey 中使用 JavaScript 发送全局击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474455/

相关文章:

javascript - 如何在 Ember js 中获取 currentRouteName 的动态部分

javascript - 模态上的工具提示

JavaScript/Firefox : "Failed to register/update ServiceWorker", 当没有使用名为 ServiceWorker 的内容时

Python、Selenium、下载所有 MIME 类型

firefox - 无法部署扩展 (firefox)

javascript - React 数组中对象的 .map

javascript - 如何调用存储在 jQuery 数组中的函数?

firefox - 可以让 Firefox DevTools Inspector 高亮显示吗?

javascript - 使用 firefox webextension api 清除所有 cookie

javascript - 如何检测禁用插件的卸载关闭原因