当用户在我的 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/