我找到了 FindBar 插件,它允许使用正则表达式在页面上进行搜索。但它只在狐狸 2 和 3 中运行良好。有人可以帮我至少适应狐狸 4。因为自 Firefox4 以来的扩展开发有一些变化。
该插件中有一些 XPCOM 组件,一个 .dll 文件和 XPCOM 函数。
这是插件的 .xpi:
http
:
//www.oxymoronical.com/files/extensions/FindBarRX/archive/FindBarRX-1.0.1.rev45.xpi 我已经阅读了这篇关于 Firefox4 变化的文章。
https://developer.mozilla.org/en-US/docs/Mozilla/XPCOM/XPCOM_changes_in_Gecko_2.0
但我仍然无法应用所有更改。我已根据这些说明更改了清单文件,但它仍然无法正常工作。因为我不知道如何正确注册这些组件。例如,我不知道他们有什么 ID。
在 Firefox2 中,它允许设置“正则表达式”复选框并输入正则表达式模式,例如 \d 来搜索数字。在 fox 4 中,它只显示该复选框,但不会对 find-textbox 内容做出反应。
有一个文件 fbTypeAheadFind.js 包含方法 Find(),它执行正则表达式搜索的主要功能。我使用 JavaScript Debugger Firefox 插件 XPCOM Viewer。在 fox2 中,我可以看到加载在该调试器中的 fbTypeAheadFind.js,我可以在文件中设置断点以进行搜索过程。但是在fox4的调试器中没有这个文件。
我猜这是因为 XPCOM 组件没有正确加载。那么我该如何解决它。也许这是不可能的,因为有负责加载这些组件的 .dll 文件,但我无法更改它。也许我可以改变所有的插件,这样它就可以在没有那些 XPCOM 的情况下工作,因为我不太了解它。现在对我来说有点难。
在上面的链接中有一个句子说应该将 NSGetModule 方法转换为 NSGetFactory。但是 NSGetModule 存储在该 .dll 文件中。所以我必须重建所有源代码来创建另一个 .dll 并获得 NSGetFactory 的东西。但我没有那个源代码,甚至不知道如何创建它。
这是我编辑的chrome.manifest:
content findbarrx chrome/content/
locale findbarrx en-US chrome/locale/en-US/
skin findbarrx classic/1.0 chrome/skin/
overlay chrome://browser/content/browser.xul chrome://findbarrx/content/browserOverlay.xul
overlay chrome://browser/content/browser.xul chrome://findbarrx/content/bindingOverlay.xul
style chrome://browser/content/browser.xul chrome://findbarrx/skin/findbarrx.css
interfaces components/fbITextExtractor.xpt
binary-component platform/WINNT_x86-msvc/components/FindBarRX.dll
component {a5089a1b-2afe-4dae-94b4-c051c3cde90a} components/fbFallbackTextExtractor.js
contract @blueprintit.co.uk/fallbacktextextractor;1 {a5089a1b-2afe-4dae-94b4-c051c3cde90a}
category profile-after-change FindBar-RX-Text-Extractor @blueprintit.co.uk/fallbacktextextractor;1