由于项目需要,在某些网页中的菜单栏中不能够有网页另存为,笔者之前做过BHO的相关开发,以为要实现该功能也要写一个类似BHO的东东,所以自然而然的将目光转向了
firefox的plugin开发过程,可当真正的实现了,才发祥并不是我想要的东西,firefox的plugin就是IE的一个ActiveX,折腾了一天的时间,才发现根本不是我要的东西,这就不说了,
对于为曾做过相关Firefox开发的同行们,要想改变firefox的菜单一定要将目光转向Extension,我就是一个活生生的反例啊。好了,现在说下我的心得,尽可能的将所有的东西都点
到,能够为后来者抛砖引玉:
这是我的Extension目录
chrome.mainfest中的内容是:
content FirstHinstance content/
overlay chrome://browser/content/browser.xul chrome://FirstHinstance/content/overlay.xul
FirstHinstance是扩展的名字,overlay是覆盖命令,因为你要改变菜单栏,自然要修改firefox中的菜单文件啊,这个文件就是 chrome://browser/content/browser.xul,而你的文件是
chrome://FirstHinstance/content/overlay.xul,这个文件放在content文件夹当中
install.rdf文件内容是:
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<!--扩展ID一般是某个邮箱的地址,但不一定是真的,也可以是CLSID()-->
<em:id>help@FirstHinstance.net</em:id>
<!--扩展名称即,在组价组件中我们看到的扩展名称-->
<em:name>FirstHinstance</em:name>
<em:version>0.1.0</em:version>
<!--我们扩展的版本号-->
<em:description>FirstHinstance</em:description>
<!--该扩展的作者-->
<em:creator>anonymous</em:creator>
<!-- Firefox -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<!--改扩展试用的firefox的最低版本号-->
<em:minVersion>1.5</em:minVersion>
<!--改扩展试用的firefox的最高版本号-->
<em:maxVersion>25.0.1.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
PS:该文件中有需要注意的是最高版本号,如果您在安装扩展时提示不兼容的话,可以尝试,将最高版本号修改成您浏览器的版本号,自己firefox浏览器的版本号可以通过橙色
栏->帮助->关于Firefox来进行查看
overlay.xul中的内容是,overlay.xul是放在content文件中的
<?xml version="1.0"?>
<overlay id="batchimagesdownloader-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<menupopup id="menu_ToolsPopup">
<menuitem id="batchimagesdownloader-show" label="FirstHinstance"
oncommand="myExtension.show(event);" />
</menupopup>
</overlay>
我们现在要做的就是在工具菜单选中添加一个按钮,FirstHinstance就是该按钮上的文字
这一点我们是怎么做到的呢?
其实很简单你在firefox地址栏中输入chrome://browser/content/browser.xul
在展示页面中就会出现firefox的本身页面再查看源代码,搜索"menu_ToolsPopup",这个就是按下F10就会出现的工具菜单栏的定义,在其后面添加一个menuitem则是在工具栏
如果想要修改其他的菜单或者布局,可以看下该文件的源代码哈哈哈
下添加一个按钮FirstHinstance,该按钮要实现的工具是在js中定义的
var myExtension = {
show: function() {
alert('this is my first Hinstance');
},}
这样一个简单的功能就实现了,