关于Firefox插件

iMacros for Firefox使用介绍
作者:zymaxs
iMacros介绍
如果你喜欢用 Firefox浏览器,但是厌倦了重复性的工作,比如每天访问同一网站,填写表格,记忆密码等等,那么 iMacros for Firefox是你梦想的解决方法!iMacros 为自动完成网页相关重复工作而设计。如果你需要重复做某件事,可以用 iMacros把过程录制下来,下次需要重做时,只要按一个按钮,全部录制的过程即可重放!
iMacros安装
iMacrosh安装相当方便,我们以firefox版本为例:
访问中文firefox附件的网页http://addons.mozilla.org/zh-CN/firefox/search?q=imacros&cat=all,点击下载安装附件。完成后重启浏览器就可以看到iMacros已经成功安装在firefox浏览器上了
iMacros使用
安装完成iMacros后,我们可以在浏览器上看到iMacros插件。点击插件在浏览器左侧弹出界面。
iMacros功能菜单分运行,记录,编辑3块.
使用iMacros录制
把浏览器页面定位到需要录制的页面,然后点击记录-记录开始录制iMacros脚本。
录制完成后点击停止按钮停止录制。
录制完成后点击储存保存脚本。
运行录制的脚本
刚刚录制的脚本将会临时保存在#Current.iim中。
选中脚本,点击运行,刚刚录制的脚本将重复运行。
在运行脚本过程中你可以点击暂停/继续来暂时停止脚本运行。当要中途完全停止脚本时,请点击停止按钮。
编辑脚本
录制后的脚本有时需要编辑一下才能使用。在列表中选中脚本后点击编辑-编辑进行编辑脚本。
你可以修改录制过程中的参数。
iMacros提供了一些系统方法允许你进行参数,正确的修改脚本将使脚本的通用性大大提高。
作者:zymaxs
http://blog.csdn.net/zymaxs/archive/2008/12/25/3597123.aspx
http://addons.mozilla.org/zh-CN/firefox/addon/3863/
22222222222222222222222222222222222222222222222222222222222222222222222222222222222222
Firefox插件制作,简明教程
2007年07月27日 星期五 08:46
昨天在晚上看见别人自己做的迅雷的Firefox 2.0.0.1插件,便对Firefox的插件制作起了兴趣。去Mozilla Developer Center上面去学习了一下,发现Firefox插件的制作还真是非常的简单。
主要参考了
http://developer.mozilla.org/en/docs/Building_an_Extension
http://roachfiend.com/archives/2004/12/08/how-to-create-firefox-extensions
http://www.rietta.com/firefox/Tutorial/overview.html
这三篇文章,挑文章中的一些精华的部分,做个简要的分析吧:
预备知识
1、Firefox 的界面引擎是非常出色的,可以用XML和Javascript来定义界面的布局、属性、动作等。界面的布局XML是Firefox自定义的格式,叫做XUL ,XUL提供对界面各种元素如:按钮、菜单、工具栏等的描述,并将各个界面元素的动作以事件的形式邦定到Javascript. 这一点和HTML十分类似。
2、Firefox 的插件是一个有特定目录结构和文件的文件夹,打包成zip文件后,再重命名为 XXX.xpi,便成了一个插件。通常的目录文件结构如下:
extension.xpi: /install.rdf/components/*/components/cmdline.js/defaults//defaults/preferences/*.js/plugins/*/chrome.manifest/chrome/icons/default/*/chrome//chrome/content/
Table 1 3、Chrome URIs
URI顾名思义了,是一个Uniform Resource Identifiers ,也就是一个资源的地址,是Firefox寻找插件资源位置的表示形式,通常你可以在XUL文件中看到很多这样的语句,如:
chrome://sample/content/sample.xul
你可以在Firefox的地址栏中输入:chrome://browser/content/browser.xul,你会看到一个空的Firefox的界面,还是满神奇的。
正式开始:
1、创建目录结构
创建一个目录结构,如上面Table 1所示,并不需要创建所有的文件和文件夹,只要创建几个必须的就行了:
e.g. C:\extensions\myExtension\
C:\extensions\myExtension\chrome\content
C:\extensions\myExtension\install.rdf
C:\extensions\myExtension\chrome.manifest
上面的文件都是必须的
2、创建并编辑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”>
<em:id>[email protected]</em:id>
<em:version>1.0</em:version>
<em:type>2</em:type>
<!– Target Application this extension can install into, with minimum and maximum supported versions. –>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>2.0.0.*</em:maxVersion>
</Description>
</em:targetApplication>
<!– Front End MetaData –>
<em:name>Sample!</em:name>
<em:description>A test extension</em:description>
<em:creator>Your Name Here</em:creator>
<em:homepageURL>http://www.foo.com/</em:homepageURL>
</Description>
</RDF>
install.rdf文件是告诉Firefox要插件的信息的,其中包括了插件的id,版本,说明,适用Firefox版本等重要信息。
3、创建并编辑XUL文件
<?xml version=”1.0″?>
<overlay id=”sample” xmlns=”http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul”>
<statusbar id=”status-bar“>
<statusbarpanel id=”my-panel” label=”Hello, World”/>
</statusbar>
</overlay>
在chrome/content文件夹中创建一个文件,如sample.xul,并将上面的内容复制进去。
其中overlay告诉Firefox这个插件是在原来的browser.xul上添加一些元素, 代表是在Firefox中的status-bar上面添加一些元素,其中的id是不能改变的,一个Firefox只能有一个status-bar,是吧。。。。
3、创建并编辑chrome.manifest文件
overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul
content sample chrome/content/
这manifest文件就和jar中的manifest文件的作用差不多,就是配置一些路径之类的。overlay告诉Firefox将sample.xul整合到browser.xul中。content告诉Firefox可以到 chrome/content/ 这个文件下找到插件的所有文件。这个路径是相对于chrome.manifest.而言的。当插件安装完成后,你也可以通过chrome://sample/content/XXX 来访问sample插件的一些资源。
4、打包和安装
完成上述所有的步骤之后,只要将所有的文件打包成一个zip文件。记住:进入插件所在的文件夹,如:C:\extensions\myExtension\,然后将这个文件夹下的内容全部打包,而不是将myExtension这个文件夹打包。否则,将会报“无法找到安装脚本 204”这个错误。打包完成之后,将文件后缀名修改一下: zip->xpi,就行了。
然后打开Firefox,将这个XXX.xpi文件拖到Firefox中就可以了。
心得:
看完了这些教程之后,我也尝试着做了一个简单的插件。由于Firefox提出的XUL这个配置文件写界面的概念,插件的制作真的变得非常的简单。 IE中的ActiveX控件和它比起来,就差远了。插件制作的主要工作,也变成了javascript脚本的编写。就和写网页差不多了,本来我还想自己做一个复杂点的插件,无奈javascript的水平实在是有限,所以就放弃了。
由此,我也有了一些想法,既然Firefox可以用配置文件做界面,Java中也应该可以实现,而最最通用,最为人熟知的格式,莫过于HTML了。 Google了一下,貌似还没有这方面的先例。呵呵,Java中做界面,可不是一般的麻烦,虽然有拖动的IDE,但要做出的复杂的界面还是非常的麻烦,HTML能够很简单的做出漂亮的界面。正好可以运用到这上面来。准备在接下去的日子里研究研究如何实现这个功能。
Firefox Add-on - 插件的组成结构24. March 2009 Comments (20)
在上一节中我们了解了一下XUL和Firefox插件的UI的编写方法,熟悉XUL插件的UI的编写方法还不够我们编写一个多语言和可扩展的插件。在编写插件之前,肯定有很多疑问,最最基础的原因还是因为对Firefox插件的不了解,所以现在我们先看Firefox插件项目中的组成结构。对于组成结构,我画了下面这个图。

关于Firefox插件
在上图中,我勾勒了3个文件,这三个文件彼此对应展现一个扩展或者窗口,其他的文件也基本上和这个结构相同,这个结构包括有:
overlay.xul:主窗体界面,UI,也是我们的XUL代码编写的位置,主要用于UI的呈现。overlay.js:主窗体的js代码,主要用javascript编写事件的响应。overlay.dtd:多语言包,主要在local文件夹下。当然,这个结构还应该算上在skin文件夹下的overlay.css,用于样式控制。
在我们了解了一个扩展或者窗体的基本结构后,我们就可以发现其实扩展的开发和HTML网页的制作没有什么很大的区别(当然区别还是很大的,主要在解释和引擎上,而在思路上是没有很大的区别的),XUL文档可以看作是HTML文档,而js文档可以看作是HTML后面的js文档,而css我就不用多说了,样式布局,在Firefox的扩展中同样可以使用css进行样式控制。我们看一下overlay.xul给我们提供了什么。
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://{appname}/skin/overlay.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://{appname}/locale/overlay.dtd">
<overlay id="{appname}-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="overlay.js"/>
<script src="setLocal.js"/>
<script src="io.js"/>
//......
</overlay>
从上面的代码我们可以看到,overlay.xul文档和XML文档很相似,但是也和HTML文档很相似,首先,上面3行代码的申明是必须的,比如我们指定了css文件,指定了dtd语言包。在overlay标签中(相当于body标签),我们可以编写XUL代码(前面的我们讲过),然后就会在浏览器中呈现,在主要的标签内,我们可以申明我们想要使用的js文件,例如这里我使用了overlay.js,selLocal.js等js文件。
值得注意的是,在扩展加载的时候,默认情况下并不会加载一些方法,在HTML有onload方法,虽然Firefox的扩展也支持,但是在默认情况下是不支持的,我们必须添加以下代码让扩展在加载时支持我们需要的方法。
<script type="application/x-javascript">
window.addEventListener("load", 方法名称, false);
</script>
注意这里的type必须是application/x-javascript,虽然这样,但是Firefox同样支持标砖的javascript,所以很多标准的javascript方法都可以直接拿过来用。
现在我们再看dtd文件,dtd文件是语言包文件,我们可以定义一个字符串(键值对应的字符串),然后使用,例如如下代码。
<!ENTITY {appname} "{appdisplayname}">
当我们在overlay中调用的时候,我们可以直接使用{appname}调用我们值{appdisplayname}。当然,这是一个系统自动生成的,如果我们需要自定义的话,可以按照这个方法自定义语言,代码如下。
<!ENTITY title.label "{appdisplayname}">
<!ENTITY separate.label "This is a A Mozilla/Firefox/Thunderbird Addon example!">
<!ENTITY close.label "Close">
当我们需要使用的时候,我们可以按照&close.label;的方法来使用,只要在相应的XUL代码中嵌入这个字符串,在运行的时候就能够显示相应的字符,这在多语言上面是非常好的,因为我们可以直接选择浏览器的语言,扩展的语言也会相应的更改。例如上面代码要适应中文化,我们也可以写成。
<!ENTITY title.label "{appdisplayname}">
<!ENTITY separate.label "这是一个例子">
<!ENTITY close.label "关闭">
在扩展的开发中,还有js文件和css文件,其编写方法和普通的没什么区别,例如js文件可以写成这样。
var setLocal={
local:"null",
pathJson:"",
ext:null,
setLocals:function(localname)
{
//.....
},
}
在使用的时候我们直接使用setLocal.方法名称(或变量名称)即可访问方法和变量,和普通的没什么区别,css也是一样,这里我就不做演示了。但是值得注意的是,css并不是所有的都会支持,当然解析是没有问题的,但是例如背景颜色,在按钮的情况下是不支持的,在窗口的情况下是支持的。而同样image属性,因为按钮有image属性,所以css的image属性很多情况下也不会起作用。
在netbean里面开发扩展,有一个好处就是能够自动的创建开发项目,而不太好的地方就是debug非常不好,而且netbean还有很多 bug,而Firefox开发的过程中,如果有错误,是不会提示错误也不会有任何显示的,如果UI制作错误,根本就不会显示,这个时候找错误就非常难了,所以在开发过程中,尽量保证开发的代码是很可读的而且很好辨认的(例如缩进什么的),这样就方便了我们的开发以及debug。
Firefox Addon firefox, addon, 插件
Tags: 

延伸阅读

最新评论

发表评论