0

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

为此,我想使用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", "");
  }
});

和文件 Data/script.js

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

(如何在此处查看:附加 SDK Builder 测试项目

那么,有人可以帮我吗?

是否可以从 XULElement 获取输入文本或 textarea 并更改其文本?

非常感谢!

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

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

[对象 HTMLInputElement]

4

1 回答 1

2

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

你应该做的是

window: require("sdk/window/utils").getMostRecentBrowserWindow().gBrowser.contentWindow
于 2013-10-24T11:39:02.747 回答