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