【发布时间】:2014-04-13 20:37:56
【问题描述】:
有没有办法将findbar 用于非浏览器元素?
我正在尝试采用 findbar 在 listbox 上的 prefwindow 上使用它。
【问题讨论】:
标签: javascript firefox-addon xul thunderbird-addon xbl
有没有办法将findbar 用于非浏览器元素?
我正在尝试采用 findbar 在 listbox 上的 prefwindow 上使用它。
【问题讨论】:
标签: javascript firefox-addon xul thunderbird-addon xbl
不幸的是,<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。
【讨论】: