javascript - document.activeElement 返回 XULElement

标签 javascript firefox-addon xul firefox-addon-sdk

当用户在我的 Firefox 插件上按 CTRL + SPACE 时,我尝试获取焦点元素。

为此,我想使用 document.activeElement 来获取焦点元素,但它不起作用。它总是返回一个 XULElement。

我在这个附加组件中只有两个文件:

Lib/main.js

var self = require ("sdk/self");

var workers = require("sdk/content/worker");
let worker =  workers.Worker({
                window: require("sdk/window/utils").getMostRecentBrowserWindow(),
                contentScriptFile: self.data.url("script.js")
              });


var { Hotkey } = require("sdk/hotkeys");
var showHotKey = Hotkey({
  combo: "control-space",
  onPress: function() {
        worker.port.emit ("getFocused", "");
  }
});

和文件 Data/script.js

self.port.on ('getFocused', function (msg){
    var campo = document.activeElement;
    alert (campo);
});

(如何在此处查看:Add-on SDK Builder Test Project)

那么,有人可以帮我吗?

可以从 XULElement 获取输入文本或文本区域并更改其文本吗?

非常感谢!

------------------------ 编辑 ----------------------

我不知道这是否有帮助,但是,当 url 文本区域(我们在其中写入站点地址)获得焦点时,它会返回一个

[对象 HTMLInputElement]

最佳答案

getMostRecentBrowserWindow 返回一个 ChromeWindow 对象。所以 activeElement` 是 XUL 元素是正常的。

你应该做的是

window: require("sdk/window/utils").getMostRecentBrowserWindow().gBrowser.contentWindow

关于javascript - document.activeElement 返回 XULElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548346/

相关文章:

javascript - 使用 phantomjs 和 rvest 抓取网页

javascript - 具有两个类的 span 的正确选择器

google-chrome - 如何访问其他 Chrome 或 Firefox 扩展程序的存储值

firefox - 在 XUL 扩展中重用内置的 Firefox 图标?

javascript - 无法创建水平菜单下拉

javascript - 如何将嵌套对象数组转换为 CSV?

javascript - 在html页面中从sqlite收取数据(addon firefox)

javascript - 页面加载后加载脚本 - Firefox 扩展

javascript - 在 XUL 中,我如何知道浏览器标签已完成加载?

javascript - 在 XUL 应用程序中监听 HTTP header