是否有办法将findbar用于非浏览器元素?
我尝试使用findbar在listbox的prefwindow上使用它。
答案 0 :(得分:1)
不幸的是,<findbar>
小部件实际上是与浏览器元素一起使用的。如果您伪造必要的浏览器API,可以将其与其他数据一起使用,但无法保证它将来会继续使用。特别是,有问题的API在Firefox 26中从同步变为异步,打破了实现它们的每个扩展,如Adblock Plus或Stylish。
在implementation of the <findbar>
widget中,您可以看到它目前对浏览器的期望:
Components.utils.import("resource://gre/modules/Services.jsm");
var fakeBrowser = {
finder: new Finder(),
_lastSearchString: "",
_lastSearchHighlight: false,
currentURI: Services.io.newURI("http://example.com/"),
contentWindow: null,
addEventListener: function() {}
removeEventListener: function() {},
};
可以将此虚假浏览器分配给findbar.browser
property。这里重要的部分是finder
属性,通常是Finder
object defined by Finder.jsm
。您当然希望实现自己的对象,提供相同的API。