0
我試圖在用戶按下我的Firefox插件上的CTRL + SPACE時獲得焦點元素。document.activeElement返回一個XULElement
要做到這一點,我想用document.activeElement來獲得聚焦的元素,但它不工作。它總是返回一個XULElement。
我只有兩個文件,在這個附加:
庫/ 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", "");
}
});
和文件數據/的script.js
self.port.on ('getFocused', function (msg){
var campo = document.activeElement;
alert (campo);
});
(你怎麼能看到這裏:Add-on SDK Builder Test Project)
那麼,有人可以幫助我嗎?
可以從XULElement中獲取輸入文本或textarea並更改其文本?
非常感謝!
------------------------編輯--------------------- -
我不知道是否有幫助,但是,當URL文本區域(這裏我們寫的網站ADRESS)具有焦點,它返回一個
[對象HTMLInputElement]
好,美觀大方。我會測試它並回到這裏給你一個反饋。謝謝。 –
是啊!有用!非常非常感謝你!但我不明白它爲什麼有效......你能給我一些解釋或鏈接嗎?再次謝謝你! –
您的目標是包含網頁的HTMLDocument的窗口。 'getMostRecentBrowserWindow'返回包含Firefox的根XULDocument的(前面有很多)窗口。 gBrowser屬性持有對「tabbrowser」元素的引用。而'contentWindow'持有對所選標籤窗口的引用(唯一可以接受用戶輸入的標籤)。如果你想要更安全,你應該檢查這個窗口的文檔是否實際上是一個HTMLDocument,並且可能檢查URl方案(關於:home是一個HTMLDocument,但可能你想跳過它)。 – paa