Javascript 返回XuleElement的document.activeElement
当用户在我的Firefox插件上按CTRL+SPACE时,我试图获得焦点元素 为此,我想使用document.activeElement来获取焦点元素,但它不起作用。它总是返回一个xulement 此加载项中只有两个文件: Lib/main.jsJavascript 返回XuleElement的document.activeElement,javascript,firefox-addon,xul,firefox-addon-sdk,Javascript,Firefox Addon,Xul,Firefox Addon Sdk,当用户在我的Firefox插件上按CTRL+SPACE时,我试图获得焦点元素 为此,我想使用document.activeElement来获取焦点元素,但它不起作用。它总是返回一个xulement 此加载项中只有两个文件: Lib/main.js var self = require ("sdk/self"); var workers = require("sdk/content/worker"); let worker = workers.Worker({
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);
});
(在这里您可以看到:)
有人能帮我吗
是否可以从XuleElement获取输入文本或textarea并更改其文本
多谢各位
------------------------编辑----------------------
我不知道它是否有用,但是,当url文本区域(我们在其中写入站点地址)具有焦点时,它会返回一个
[object HTMLInputElement]
getMostRecentBrowserWindow
返回一个ChromeWidow对象。所以activeElement`是XUL元素是正常的
你应该做的是
window: require("sdk/window/utils").getMostRecentBrowserWindow().gBrowser.contentWindow
好的,很好。我会测试一下,然后回来给你反馈。谢谢。是的!!!它起作用了!非常感谢!但我不明白为什么它会起作用。。。你能给我一些解释或链接吗?再次感谢你!您的目标是包含网页HTMLDocument的窗口
getMostRecentBrowserWindow
返回包含Firefox根XULDocument的窗口(如果有多个窗口,则返回前面的窗口)。gBrowser属性包含对tabbrowser
元素的引用。并且contentWindow
保存对所选选项卡窗口的引用(唯一可以接受用户输入的窗口)。如果你想更加安全,你应该检查这个窗口的文档是否是一个HTMLDocument,并可能检查URl方案(关于:home是一个HTMLDocument,但你可能想跳过它)。只需注意:require(“sdk/window/utils”).getMostRecentBrowserWindow()。内容较短,与Firefox不太一样(将window.content
变量自动设置为主XUL框架内的窗口)。