我找到了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来搜索数字。在狐狸4中它只显示复选框但不对查找文本框内容作出反应。
有一个文件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