1

我正在开发一个 Firefox 插件,我想知道如何使用 Mozila 插件 SDK 在工具栏中获取搜索框的内容?我终于找到了它所在的 chrome URL(至少我认为:chrome://browser/content/search/...),但我仍然有点不确定如何引用它来获取搜索框进入我的插件。我试过了:document.getAnonymousElementByAttribute(this, "anonid", "searchbar-textbox");但这给出了“文档未定义”错误,可能是因为 Firefox 不知道“搜索栏文本框”是什么,这超出了插件的范围(在不同的“文档”中)。我对插件开发比较陌生,所以可能有一种相当直接的方法可以做到这一点,只是我不知道这个解决方案。谢谢。

4

1 回答 1

2

您的“主”模块(和其他 lib/ 模块)没有附加任何文档。您需要首先使用一些低级 API,例如window/utils .getMostRecentBrowserWindow()获取活动浏览器窗口的 DOMWindow 的函数。之后,它只是获取#searchbar元素并检查.value属性(通过 XBL 公开)。

完整示例:

const {getMostRecentBrowserWindow} = require("window/utils");

require("sdk/widget").Widget({
  id: "log-search-field",
  label: "Log Search Field",
  contentURL: "http://www.mozilla.org/favicon.ico",
  onClick: function() {
    let win = getMostRecentBrowserWindow();
    console.error("Search text: " + win.document.getElementById("searchbar").value);
  }
});
于 2013-10-14T20:58:05.873 回答