<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4837204256156578315</id><updated>2012-01-02T19:24:01.442-08:00</updated><category term='一般问题'/><category term='网络编程'/><category term='程序调试'/><category term='Hack'/><category term='STL'/><category term='Linux'/><category term='正则表达式'/><category term='OpenSSL'/><category term='ACE'/><category term='轻松一下'/><category term='Windows'/><category term='Visual C++'/><category term='游戏'/><title type='text'>学习C＋＋</title><subtitle type='html'>C++ , stl , boost库，等与C＋＋相关的东东</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>张瑞</name><uri>http://www.blogger.com/profile/00960728234563223497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-5021586384239983696</id><published>2007-07-31T02:08:00.000-07:00</published><updated>2007-07-31T02:43:10.815-07:00</updated><title type='text'>Firefox扩展开发参考资料</title><content type='html'>&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;入门网址：&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;A   href="http://kb.mozillazine.org/Extension_development"&gt;http://kb.mozillazine.org/Extension_development&lt;/A&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;A   href="http://developer.mozilla.org/en/docs/Building_an_Extension"&gt;http://developer.mozilla.org/en/docs/Building_an_Extension&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;A   href="http://blog.csdn.net/nickcen/archive/2006/07/17/933552.aspx"&gt;http://blog.csdn.net/nickcen/archive/2006/07/17/933552.aspx&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;A   href="http://developer.mozilla.org/en/docs/XPCOM"&gt;http://developer.mozilla.org/en/docs/XPCOM&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=Verdana&gt;可用源码：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=Verdana&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=2&gt;&lt;A   href="http://fireftp.mozdev.org/developers.html"&gt;http://fireftp.mozdev.org/developers.html&lt;/A&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;A   href="http://doudehou.googlepages.com/statusbarex-sourcecode"&gt;http://doudehou.googlepages.com/statusbarex-sourcecode&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV align=left&gt;&lt;FONT size=2&gt;  &lt;HR style="WIDTH: 122px; HEIGHT: 2px" SIZE=2&gt;  &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT color=#c0c0c0&gt;&lt;FONT size=2&gt;  &lt;DIV&gt;  &lt;DIV&gt;海阔天空，做什么就记什么。主要是 Ubuntu Linux 和 Latex 及编程相关的东东：   http://www.pkblogs.com/hai-kuo/&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=2&gt;2007-07-31&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-5021586384239983696?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/5021586384239983696/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=5021586384239983696' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5021586384239983696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5021586384239983696'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_2014.html' title='Firefox扩展开发参考资料'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-1624970191184014262</id><published>2007-07-31T01:52:00.001-07:00</published><updated>2007-07-31T01:52:18.157-07:00</updated><title type='text'>Writing an Extension for Firefox</title><content type='html'>&lt;DIV&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;  &lt;H3 class=title&gt;&lt;A   href="http://www.orablogs.com/duffblog/archives/000536.html"&gt;Writing an   Extension for Firefox&lt;/A&gt;&lt;/H3&gt;  &lt;P&gt;One of the best things about Firefox and Thunderbird is that they have a well   defined extension mechanism. If there's some feature you feel is completely   missing, you can go ahead and add it. It's relatively easy to do ― you don't   have to fiddle about with a C compiler because extensions are mostly written in   a combination of XML and ECMAScript. &lt;/P&gt;  &lt;P&gt;I've recently been getting up to speed with the mechanics of writing an   extension for Firefox and Thunderbird. I thought it might be a good idea to   share what I'm learning in my blog. Hopefully the information might be useful to   others trying to learn how to write Mozilla extensions. In this blog, I'll take   a look at installing a really simple extension into Firefox that adds a "Hello   World" menu item to the Tools menu. &lt;/P&gt;  &lt;DIV align=center&gt;&lt;IMG title="Hello World item in the Firefox Tools Menu"   alt="Hello World item in the Firefox Tools Menu"   src="http://www.dubh.org/jdevimages/ff_hello_toolsmenu.png"&gt; &lt;/DIV&gt;  &lt;P&gt;It doesn't do anything useful yet, but over subsequent blogs, I'll introduce   more advanced and useful techniques.&lt;/P&gt;  &lt;H4&gt;Creating contents.rdf&lt;/H4&gt;  &lt;P&gt;&lt;CODE&gt;contents.rdf&lt;/CODE&gt; is a Resource Description Framework (RDF) file that   describes the contents of an extension. RDF is an XML grammar that provides a   data model that can be easily processed by an application. You don't need to   know much about RDF to write simple extensions, but if you're interested, you   can get more information at the &lt;A   href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/"&gt;W3C&lt;/A&gt;. &lt;/P&gt;  &lt;P&gt;To get started, create a directory called &lt;CODE&gt;content&lt;/CODE&gt;. As its name   suggests, this will contain the main content of your extension.   &lt;CODE&gt;contents.rdf&lt;/CODE&gt; should live inside this directory. You should end up   with a directory structure something like this:&lt;/P&gt;&lt;PRE&gt;c:\myextensions\  +- helloworld     +- content        +- contents.rdf&lt;/PRE&gt;  &lt;P&gt;Here's the code for &lt;CODE&gt;contents.rdf&lt;/CODE&gt;.&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;?xml version="1.0"?&amp;gt;  &amp;lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"           xmlns:chrome="http://www.mozilla.org/rdf/chrome#"&amp;gt;   		       &amp;lt;RDF:Seq about="urn:mozilla:package:root"&amp;gt;      &amp;lt;RDF:li resource="&lt;STRONG&gt;urn:mozilla:package:helloworld&lt;/STRONG&gt;"/&amp;gt;    &amp;lt;/RDF:Seq&amp;gt;        &amp;lt;RDF:Description about="&lt;STRONG&gt;urn:mozilla:package:helloworld&lt;/STRONG&gt;"      chrome:displayName="&lt;STRONG&gt;Hello World&lt;/STRONG&gt;"      chrome:author="&lt;STRONG&gt;Brian Duff&lt;/STRONG&gt;"      chrome:authorURL="&lt;STRONG&gt;http://modev.dubh.org/helloworld&lt;/STRONG&gt;"      chrome:name="&lt;STRONG&gt;helloworld&lt;/STRONG&gt;"      chrome:extension="true"      chrome:description="&lt;STRONG&gt;A simple demonstration firefox extension.&lt;/STRONG&gt;"&amp;gt;    &amp;lt;/RDF:Description&amp;gt;       &amp;lt;RDF:Seq about="urn:mozilla:overlays"&amp;gt;      &amp;lt;RDF:li resource="chrome://browser/content/browser.xul"/&amp;gt;    &amp;lt;/RDF:Seq&amp;gt;          &amp;lt;RDF:Seq about="chrome://browser/content/browser.xul"&amp;gt;      &amp;lt;RDF:li&amp;gt;&lt;STRONG&gt;chrome://helloworld/content/helloworld-Overlay.xul&lt;/STRONG&gt;&amp;lt;/RDF:li&amp;gt;    &amp;lt;/RDF:Seq&amp;gt;    &amp;lt;/RDF:RDF&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;The important parts of the file (and the parts that would usually change for   each extension) have been highlighted in bold. First, we provide a package for   our extension. This just distinguishes it from other extensions. For our simple   extension, we choose the package &lt;CODE&gt;helloworld&lt;/CODE&gt;:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;RDF:Seq about="urn:mozilla:package:root"&amp;gt;    &amp;lt;RDF:li resource="&lt;STRONG&gt;urn:mozilla:package:helloworld&lt;/STRONG&gt;"/&amp;gt;  &amp;lt;/RDF:Seq&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;Next, we provide a description of our extension:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;RDF:Description about="&lt;STRONG&gt;urn:mozilla:package:helloworld&lt;/STRONG&gt;"    chrome:displayName="&lt;STRONG&gt;Hello World&lt;/STRONG&gt;"    chrome:author="&lt;STRONG&gt;Brian Duff&lt;/STRONG&gt;"    chrome:authorURL="&lt;STRONG&gt;http://modev.dubh.org/helloworld&lt;/STRONG&gt;"    chrome:name="&lt;STRONG&gt;helloworld&lt;/STRONG&gt;"    chrome:extension="true"    chrome:description="&lt;STRONG&gt;A simple demonstration firefox extension.&lt;/STRONG&gt;"&amp;gt;  &amp;lt;/RDF:Description&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;Next, we tell mozilla which parts of the product we want to extend. All of   the user interface elements of Firefox and Thunderbird are described in a user   interface definition language called XUL. Collectively, these user interface   components are known as "chrome". You can extend most of the user visible parts   of the two products. In this case, we want to extend the main browser interface   of Firefox, defined in &lt;CODE&gt;chrome://browser/content/browser.xul&lt;/CODE&gt;. Here's   how:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;RDF:Seq about="urn:mozilla:overlays"&amp;gt;    &amp;lt;RDF:li resource="chrome://browser/content/browser.xul"/&amp;gt;  &amp;lt;/RDF:Seq&amp;gt;  &lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;Now we've described what we want to extend, we have to provide a XUL file   that actually installs our custom user interface into the browser window. We   will define this later in a separate XML file called helloworld-Overlay.xul. We   must tell mozilla where this file is and what it extends:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;RDF:Seq about="chrome://browser/content/browser.xul"&amp;gt;    &amp;lt;RDF:li&amp;gt;&lt;STRONG&gt;chrome://helloworld/content/helloworld-Overlay.xul&lt;/STRONG&gt;&amp;lt;/RDF:li&amp;gt;  &amp;lt;/RDF:Seq&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;We've completed the first step of creating an extension. The next task is to   describe the user interface elements we want to install into the main   window.&lt;/P&gt;  &lt;H4&gt;Overlaying User Interface Elements&lt;/H4&gt;  &lt;P&gt;XUL is the XML User interface Language. XUL provides a mechanism called &lt;A   href="http://www.xulplanet.com/tutorials/xultu/crosspov.html"&gt;dynamic   overlays&lt;/A&gt; that allows you to modify the user interface elements of a window   or control without having to modify the original XUL files. This way, the   definition of extension user interface is de-coupled from the XUL files used to   define the main interface elements in Firefox and Thunderbird.&lt;/P&gt;  &lt;P&gt;We start of by creating &lt;CODE&gt;helloworld-Overlay.xul&lt;/CODE&gt;. This should live   in the same directory as &lt;CODE&gt;contents.rdf&lt;/CODE&gt;. &lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;?xml version="1.0"?&amp;gt;    &amp;lt;overlay id="helloworldOverlay"     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&amp;gt;      &amp;lt;menupopup id="menu_ToolsPopup"&amp;gt;      &amp;lt;menuitem label="Hello World" position="1" /&amp;gt;    &amp;lt;/menupopup&amp;gt;    &amp;lt;/overlay&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;This simple overlay installs a "Hello World" menu item at the top of the   Tools menu. Our menu item is defined inside a &lt;CODE&gt;menupopup&lt;/CODE&gt; element. In   XUL, a &lt;CODE&gt;menupopup&lt;/CODE&gt; represents a container of menu items, for example   a popup menu or the drop down of a main menu. Here, we put our item inside a   &lt;CODE&gt;menupopup&lt;/CODE&gt; with the id &lt;CODE&gt;menu_ToolsPopup&lt;/CODE&gt;. This id,   &lt;CODE&gt;menu_ToolsPopup&lt;/CODE&gt;, is a predefined in &lt;CODE&gt;browser.xul&lt;/CODE&gt; and   corresponds to the drop down part of the Tools menu.&lt;/P&gt;  &lt;H4&gt;Creating an Install Manifest&lt;/H4&gt;  &lt;P&gt;Recent versions of Firefox and Thunderbird have a new extension manager which   can be used to easily install and manage extensions. To tell this extension   manager about your extension, you must write another RDF file called   install.rdf. This file should be at the same level in the directory tree as the   contents directory, i.e. you should have a structure like this:&lt;/P&gt;&lt;PRE&gt;c:\myextensions\  +- helloworld     +- &lt;STRONG&gt;install.rdf&lt;/STRONG&gt;     +- content        +- contents.rdf        +- helloworld-Overlay.xul     &lt;/PRE&gt;  &lt;P&gt;Here's the code for the install manifest with the interesting parts   highlighted:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;?xml version="1.0"?&amp;gt;    &amp;lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:em="http://www.mozilla.org/2004/em-rdf#"&amp;gt;      &amp;lt;Description about="urn:mozilla:install-manifest"&amp;gt;        &amp;lt;em:name&amp;gt;&lt;STRONG&gt;Hello World&lt;/STRONG&gt;&amp;lt;/em:name&amp;gt;      &amp;lt;em:id&amp;gt;&lt;STRONG&gt;{12a1584b-2123-473d-8752-e82e74e3cb1b}&lt;/STRONG&gt;&amp;lt;/em:id&amp;gt;      &amp;lt;em:version&amp;gt;&lt;STRONG&gt;0.1&lt;/STRONG&gt;&amp;lt;/em:version&amp;gt;        &amp;lt;em:targetApplication&amp;gt;        &amp;lt;Description&amp;gt;          &amp;lt;em:id&amp;gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&amp;lt;/em:id&amp;gt;          &amp;lt;em:minVersion&amp;gt;&lt;STRONG&gt;0.9&lt;/STRONG&gt;&amp;lt;/em:minVersion&amp;gt;          &amp;lt;em:maxVersion&amp;gt;&lt;STRONG&gt;1.0&lt;/STRONG&gt;&amp;lt;/em:maxVersion&amp;gt;        &amp;lt;/Description&amp;gt;      &amp;lt;/em:targetApplication&amp;gt;         &amp;lt;em:file&amp;gt;        &amp;lt;Description about="&lt;STRONG&gt;urn:mozilla:extension:file:helloworld.jar&lt;/STRONG&gt;"&amp;gt;          &amp;lt;em:package&amp;gt;&lt;STRONG&gt;content/&lt;/STRONG&gt;&amp;lt;/em:package&amp;gt;        &amp;lt;/Description&amp;gt;      &amp;lt;/em:file&amp;gt;      &amp;lt;/Description&amp;gt;    &amp;lt;/RDF&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;First, we provide a description of the extension. This information will be   displayed in Firefox's extension manager:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;em:name&amp;gt;&lt;STRONG&gt;Hello World&lt;/STRONG&gt;&amp;lt;/em:name&amp;gt;  &amp;lt;em:id&amp;gt;&lt;STRONG&gt;{12a1584b-2123-473d-8752-e82e74e3cb1b}&lt;/STRONG&gt;&amp;lt;/em:id&amp;gt;  &amp;lt;em:version&amp;gt;&lt;STRONG&gt;0.1&lt;/STRONG&gt;&amp;lt;/em:version&amp;gt;  &lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;The content of the em:id element is a globally unique identifier (GUID). This   is used to distinguish your extension from every other extension. When writing   your own extensions, you should aways generate a new GUID for each distinct   extension you write. Andy Hoskinson provides a &lt;A   href="http://www.hoskinson.net/webservices/guidgeneratorclient.aspx"&gt;GUID   generator web service&lt;/A&gt; you can use for this.&lt;/P&gt;  &lt;P&gt;Next, we describe which application we are extending:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;em:targetApplication&amp;gt;    &amp;lt;Description&amp;gt;      &amp;lt;em:id&amp;gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&amp;lt;/em:id&amp;gt;      &amp;lt;em:minVersion&amp;gt;&lt;STRONG&gt;0.9&lt;/STRONG&gt;&amp;lt;/em:minVersion&amp;gt;      &amp;lt;em:maxVersion&amp;gt;&lt;STRONG&gt;1.0&lt;/STRONG&gt;&amp;lt;/em:maxVersion&amp;gt;    &amp;lt;/Description&amp;gt;  &amp;lt;/em:targetApplication&amp;gt;  &lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;Each extensible application released by Mozilla has its own GUID: you must   specify the correct one here for the application you are extending. In this   example, we're using the GUID for Firefox. We also describe the minimum and   maximum versions of Firefox this extension will work with.&lt;/P&gt;  &lt;P&gt;Finally, we tell the extension manager which files to install. Later, I'll   describe how we package the extension up so that it can be automatically   installed into Firefox:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;em:file&amp;gt;    &amp;lt;Description about="&lt;STRONG&gt;urn:mozilla:extension:file:helloworld.jar&lt;/STRONG&gt;"&amp;gt;      &amp;lt;em:package&amp;gt;&lt;STRONG&gt;content/&lt;/STRONG&gt;&amp;lt;/em:package&amp;gt;    &amp;lt;/Description&amp;gt;  &amp;lt;/em:file&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;H4&gt;Packaging an Extension Installer&lt;/H4&gt;  &lt;P&gt;Our extension is now complete. But to make it easy for users to install the   extension, we should package it up in such a way that Firefox can install it   easily. To do this, we bundle our files up into an XPI (Cross platform   installer) file. An XPI file is just a normal zip file with files organized in a   special way. Our XPI file should contain the following structure:&lt;/P&gt;&lt;PRE&gt;helloworld.xpi  +- install.rdf  +- chrome/     +- helloworld.jar&lt;/PRE&gt;  &lt;P&gt;helloworld.jar is another zip file containing all the files we created in the   content directory:&lt;/P&gt;&lt;PRE&gt;helloworld.jar    +- content/       +- contents.rdf       +- helloworld-Overlay.xul  &lt;/PRE&gt;  &lt;P&gt;You can easily use this information to create helloworld.xpi using your   favorite zip tool. Alternatively, you can use a build utility like &lt;A   href="http://ant.apache.org/"&gt;Ant&lt;/A&gt; to assemble the files correctly. Here's an   example Ant buildfile I used:&lt;/P&gt;  &lt;BLOCKQUOTE&gt;&lt;PRE&gt;&amp;lt;?xml version="1.0"?&amp;gt;    &amp;lt;project name="helloworld" default="createxpi"&amp;gt;      &amp;lt;target name="createjar"&amp;gt;      &amp;lt;zip destfile="helloworld.jar" basedir="."            includes="content/**" /&amp;gt;    &amp;lt;/target&amp;gt;      &amp;lt;target name="createxpi" depends="createjar"&amp;gt;      &amp;lt;zip destfile="helloworld.xpi"&amp;gt;        &amp;lt;zipfileset dir="." includes="helloworld.jar"                     prefix="chrome" /&amp;gt;  	   &amp;lt;zipfileset dir="." includes="install.rdf" /&amp;gt;  	 &amp;lt;/zip&amp;gt;    &amp;lt;/target&amp;gt;  							   &amp;lt;/project&amp;gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;  &lt;P&gt;If you create this buildfile named &lt;CODE&gt;build.xml&lt;/CODE&gt; and place it at the   same level as &lt;CODE&gt;install.rdf&lt;/CODE&gt;, you will be able to just run   &lt;CODE&gt;ant&lt;/CODE&gt; in this directory to generate your .xpi. Once you have an .xpi   file, it can be easily installed using File-&amp;gt;Open... in Firefox.&lt;/P&gt;  &lt;DIV align=center&gt;&lt;IMG title="Hello World item in the Firefox Extension manager"   alt="Hello World item in the Firefox Extension manager"   src="http://www.dubh.org/jdevimages/ff_hello_extman.png"&gt;&lt;/DIV&gt;  &lt;P&gt;Download the &lt;A href="http://www.dubh.org/jdevimages/helloworld.zip"&gt;source   code&lt;/A&gt; (24KB ZIP file). &lt;/P&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV align=left&gt;&lt;FONT size=2&gt;  &lt;HR style="WIDTH: 122px; HEIGHT: 2px" SIZE=2&gt;  &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT color=#c0c0c0&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=2&gt;2007-07-31&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-1624970191184014262?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/1624970191184014262/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=1624970191184014262' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/1624970191184014262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/1624970191184014262'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/writing-extension-for-firefox.html' title='Writing an Extension for Firefox'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-3508324773069704171</id><published>2007-07-31T01:49:00.001-07:00</published><updated>2007-07-31T01:49:05.655-07:00</updated><title type='text'>Firefox扩展开发</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;div class="postTitle"&gt;		&lt;a href="http://blog.csdn.net/nickcen/archive/2006/07/13/916832.aspx"&gt;&lt;img src="http://blog.csdn.net/images/authorship.gif" border="0" height="13" width="15"&gt;&amp;nbsp;Firefox扩展开发之一&lt;/a&gt;	&lt;/div&gt;						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最近主要做Firefox插件的开发，决定把每天的工作情况写下来，希望对其他有需要的同人有所帮助了。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 要搞这个冬冬最起码要掌握以下几门技术，XUL用来开发界面的，JavaScript用来做事件处理的，CSS用来做样式单的，DOM用来操作节点的，原 本打算也研究一下XPCOM的，但是老板说时间紧，任务重，所以就先把这个pass过去了。这几样技术单独看虽然都不是很复杂，但是绞和在一起真是可以把 人折磨死。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 先说JavaScript吧，这个东西一开始看也没觉着什么，类定义的不多，所以没什么库需要学的，但实际开发的时候，才发现类定义少了会更郁闷，想用个 什么都要自己动手，实在是类，然后变量引用，名字空间，运行上下文，prototype chain，一堆东西把人搞到云里雾里的。之前搞Java那套，放在这还真不太适用，感觉要重头再来一样，挫折啊，郁闷啊。有的时候为了省事，想拿别人的 库来用吧，才发现AJAX不但带旺了互联网，还搞红了JavaScript，一堆框架prototype，dojo...让你学的不亦乐乎。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div class="postTitle"&gt;		&lt;a href="http://blog.csdn.net/nickcen/archive/2006/07/15/923252.aspx"&gt;&lt;img src="http://blog.csdn.net/images/authorship.gif" border="0" height="13" width="15"&gt;&amp;nbsp;Firefox扩展开发之二&lt;/a&gt;	&lt;/div&gt;				 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 开发插件实在是很痛苦的一件事情，因为他需要用到Firefox的chrome系统，而每次更新了代码之后，都需要重新载入chrome才能起作用。 一般情况下要重启chrome就需要重新启动firefox，还好有人已经发现这种痛苦，所以开发了一个Extension Developer Manager，里面提供了好几个工具，用的最多的是reload chrome，用来在不重启firefox的情况下，重新载入chrome，第二个是javascript shell，他可以访问任意一个当前的firefox窗口。而要完成插件开发，一般还要用到Console，因为很多调试信息都需要通过这看，如果没这玩 意，那估计每次都得用alert了。至于DOM Inspector一般用不上，因为如果你要象greesemonkey那样，获取当前页面的HTML DOM的话，一般都只能通过事件来实现，然后hack到她的appcontent里面，这东西在DOM Inspector里面没有，所以，你通过这种方式修改了DOM树，通过DOM Inspector是看不出来的，而为了验证你有没有修改成功，现在我的方法就是靠javascript shell。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 关于DOM，我搞了足足两天，才算搞出个所以然来，由于firefox是用XUL写的，而XUL也定义了DOM，所以，一般情况下你在扩展里头，或者 javascript shell里面通过document获取的仅仅是XUL的DOM，要获取browser里面的DOM，我现在探索出来的有两种，一种是 greesemonkey那样，用事件，每次都监察DOMContentLoad事件，这个方法很危险，例如如果一个网页他有多个frame，那么这个事 件就会发生多次，而由于greesemonkey只是在加载的时候用user script对DOM做一次处理，所以这个问题不是特别大。不过，如果我要做的是能够多次操作DOM树，所以，就必须要得到当前窗口的当前正在显示的 DOM，为了获取这冬冬，我足足用了2天，google了所有能想到的关键词，把XUL planet和MDC上面的文章都翻了个遍，最后终于在moznet的irc上面问到人了，原来要得到这东西根本不需要用事件，只要通过 content.document就可以得到了。实在不容易啊。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div &gt;&lt;div class="postTitle"&gt;		&lt;a href="http://blog.csdn.net/nickcen/archive/2006/07/17/933552.aspx"&gt;&lt;img src="http://blog.csdn.net/images/authorship.gif" border="0" height="13" width="15"&gt;&amp;nbsp;Firefox扩展开发之三－－javascript lib&lt;/a&gt;	&lt;/div&gt;				 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; javasript是灵活的，但是在原始的javascript上裸开发的 好像比较少，一般大家都会选择某个库进行。js方面的lib，一开始比较有名的应该是prototype，网上关于这个的介绍和讨论也很多，但是现在好像 大家用这个的也比较少了，因为prototype大量的修改了javascript的基础类，所以对javascipt的名字空间的污染比较大，很容易发 生名字空间方面的冲突。后续的lib大都吸取了这方面的教训，一般把自己的方法和类定义在一个单一的名字空间下，不过这样带来的另外一个问题是，这些 lib更多时候象一个toolkit，当需要某些功能时，就调用这些toolkit中的功能类，因此，面向对象的特性不太明显。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于这些lib，现在我用的比较多的是dojo，因为他提供了比较类似于java的语法，所以，用起来比较顺手。不过用在extension里面开发时也 会遇到一些问题，因为dojo在设计的时候是针对html的dom的，但是扩展使用的是xul的dom，虽然两者之间有很多的相似之处，但是毕竟不太一 样，因此要把dojo引入扩展当中，还需要对dojo的源代码进行修改。&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt; &lt;div&gt;海阔天空，做什么就记什么。主要是 Ubuntu Linux 和 Latex 及编程相关的东东： http://hai-kuo.blogspot.com/&amp;nbsp;&lt;/div&gt; &lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;&lt;hr&gt;  &lt;a style="font-size:14px;line-height:15px; color:#000; text-decoration:none" href="http://event.mail.163.com/chanel/xyq.htm?from=163_NO7" target="_blank"&gt;&lt;span style="text-decoration:underline; color:blue"&gt;劲 爆 150 万 同 时 在 线，众 人 追 捧 梦 幻 西 游 &lt;/span&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-3508324773069704171?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/3508324773069704171/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=3508324773069704171' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3508324773069704171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3508324773069704171'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_4438.html' title='Firefox扩展开发'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-8660667283273784187</id><published>2007-07-31T01:39:00.001-07:00</published><updated>2007-07-31T01:39:30.795-07:00</updated><title type='text'>开发你的第一个Firefox扩展</title><content type='html'>&lt;div&gt;&amp;nbsp;&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm"&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt; font-family: 宋体;"&gt;开发你的第一个&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt;" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt; font-family: 宋体;"&gt;扩展&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;  &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt; font-family: 宋体;"&gt;刘文懋&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 15pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span lang="EN-US"&gt;Why Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;？&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如果有人问我为什么用&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn1" name="_ftnref1" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[1]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，首先毫无疑问的是它代表了开放和自由的精神，其次嘛，我会说是它的可扩展性。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;最激动人心的特点就是它提供了开放的接口，你可以使用这些接口来做各种应用，完成各种各样的功能。你应该不曾给&lt;/span&gt;&lt;span lang="EN-US"&gt;IE&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;添点什么吧，微软不见得这么大方能告诉你什么有用的东西。他最慷慨的事就是给你一个&lt;/span&gt;&lt;span lang="EN-US"&gt;COM&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;组件，记得我对&lt;/span&gt;&lt;span lang="EN-US"&gt;IE&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的最高级的应用，就是在一次网络大作业中，把整个&lt;/span&gt;&lt;span lang="EN-US"&gt;IE&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;嵌在我的程序里，仅此而已。而&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;则不同了，当你看到了&lt;/span&gt;&lt;span lang="EN-US"&gt;Fireftp&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就知道我在说什么了。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75"  coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"  filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"/&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"/&gt;   &lt;v:f eqn="sum @0 1 0"/&gt;   &lt;v:f eqn="sum 0 0 @1"/&gt;   &lt;v:f eqn="prod @2 1 2"/&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"/&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @0 0 1"/&gt;   &lt;v:f eqn="prod @6 1 2"/&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"/&gt;   &lt;v:f eqn="sum @8 21600 0"/&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"/&gt;   &lt;v:f eqn="sum @10 21600 0"/&gt;  &lt;/v:formulas&gt;  &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/&gt;  &lt;o:lock v:ext="edit" aspectratio="t"/&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:414.75pt;  height:331.5pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image001.png" o:title="fireftp"/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image002.jpg" v:shapes="_x0000_i1025" height="442" width="553"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;请合上你的下巴，这没有什么值得惊讶的。这就是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，中间那个&lt;/span&gt;&lt;span lang="EN-US"&gt;cool&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;ftp&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;工具只是它的一个扩展（&lt;/span&gt;&lt;span lang="EN-US"&gt;Extesion&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）而已。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;想做一个这样的东东吗？我不会告诉你到底有多难，因为这不是我开发的，有兴趣的话你可以自己试一试，网址是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://fireftp.mozdev.org/"&gt;http://fireftp.mozdev.org/&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;类似的扩展还有很多，你可以到&lt;/span&gt;&lt;span lang="EN-US"&gt;mozilla&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展库去看看，据&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.mozilla.org/press/mozilla-2005-11-9.html"&gt;&lt;span style="font-family: 宋体;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;官方统计&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，到&lt;/span&gt;&lt;st1:chsdate isrocdate="False" islunardate="False" day="9" month="11" year="2005" w:st="on"&gt;&lt;span lang="EN-US"&gt;2005&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;年&lt;/span&gt;&lt;span lang="EN-US"&gt;11&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;9&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;日&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span style="font-family: 宋体;"&gt;，（忘了告诉你了，&lt;/span&gt;&lt;st1:chsdate isrocdate="False" islunardate="False" day="9" month="11" year="2004" w:st="on"&gt;&lt;span lang="EN-US"&gt;2004&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;年&lt;/span&gt;&lt;span lang="EN-US"&gt;11&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;月&lt;/span&gt;&lt;span lang="EN-US"&gt;9&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;日&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的诞生日，也就是说它还只是一个小&lt;/span&gt;&lt;span lang="EN-US"&gt;baby&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;），用户至少可以使用&lt;/span&gt;&lt;span lang="EN-US"&gt;700&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;个扩展（&lt;/span&gt;&lt;span lang="EN-US"&gt;Extension&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）或者附件（&lt;/span&gt;&lt;span lang="EN-US"&gt;Add-on&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）。可见&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展发展是多么的迅速！&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;以前我在&lt;/span&gt;&lt;span lang="EN-US"&gt;99%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的时间内使用&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，另外&lt;/span&gt;&lt;span lang="EN-US"&gt;1%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的时间使用&lt;/span&gt;&lt;span lang="EN-US"&gt;IE&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;浏览一些不遵从&lt;/span&gt;&lt;span lang="EN-US"&gt;W&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C" w:st="on"&gt;3C&lt;/st1:chmetcnv&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;标准而非用&lt;/span&gt;&lt;span lang="EN-US"&gt;IE&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;不可的垃圾网站，我们学校的&lt;/span&gt;&lt;span lang="EN-US"&gt;BBS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;很不幸地成为其中一员。但是现在我在&lt;/span&gt;&lt;span lang="EN-US"&gt;100%&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的时间内使用&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，这归功于一个&lt;/span&gt;&lt;span lang="EN-US"&gt;ie tab&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn2" name="_ftnref2" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[2]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展。所幸随着网络标准的日渐被重视，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;有可能会支持所有的网站。&lt;/span&gt; &lt;span lang="EN-US"&gt;:) &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;好了，说了这么多&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展的好处，是不是有点心动了呢？那么就用一个&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来开始我们的第一个&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展吧。别说我太不&lt;/span&gt;&lt;span lang="EN-US"&gt;in&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;了，毕竟&lt;/span&gt;&lt;span lang="EN-US"&gt;hello world&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;总是最容易让我们使所有编程语言的开场白，不是吗？&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Here we go&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;！&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;认识&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展&lt;/span&gt;&lt;/h1&gt;  &lt;h2&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;扩展的功能&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;从功能来说，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展应该是用户和浏览器内核交互的一种体系结构。扩展可以满足用户一些特定的需要，实现特定的功能。开发者可以使用内核提供的一些用户接口，编写自己的实现代码，完成自己设想的功能。&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 14pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;扩展的格式&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;从开发的角度来讲，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展是一个文件目录的集合，它们按照一定格式和规范编写和排布的。最终，发布给用户的是一个&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包。别感到奇怪，这个&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件和那些&lt;/span&gt;&lt;span lang="EN-US"&gt;jar&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn3" name="_ftnref3" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[3]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的文件一样，都是&lt;/span&gt;&lt;span lang="EN-US"&gt;zip&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;格式的压缩文件。所以这下你懂了吧，把你做完的文件按照&lt;/span&gt;&lt;span lang="EN-US"&gt;zip&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;格式压缩一下就成了我们的扩展包了。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;那么究竟具体的&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中是什么情景的？解开我提供的&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件包，你会发现文件目录的排布如下所示。其中树型结构的叶子部分都是文件，其他的中间结点都是目录。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;HelloWorld.xpi&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; contents.rdf&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; helloworld-Overlay.xul&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└─&lt;/span&gt;&lt;span lang="EN-US"&gt; hello.js&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; en-US&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├&lt;/span&gt;&lt;span lang="EN-US"&gt; contents.rdf&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└&lt;/span&gt;&lt;span lang="EN-US"&gt; helloworld.dtd&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└─&lt;/span&gt;&lt;span lang="EN-US"&gt; zh-CN&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├&lt;/span&gt;&lt;span lang="EN-US"&gt; contents.rdf&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└&lt;/span&gt;&lt;span lang="EN-US"&gt; helloworld.dtd&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└─&lt;/span&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; qq_small.png&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; qq_big.png&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; helloworld.css&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;└─&lt;/span&gt;&lt;span lang="EN-US"&gt; contents.rdf&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;│&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; build.xml&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;├─&lt;/span&gt;&lt;span lang="EN-US"&gt; install.rdf&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;└─&lt;/span&gt;&lt;span lang="EN-US"&gt; chrome.manifest&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;通常，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展在根目录中，会有&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，这个文件说明了扩展的基本信息，例如扩展的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、作者、版本等信息。在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;之前的版本，该文件还会包含扩展的文件分布信息，在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;至后，这些信息都移到了&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中。在调试的时候，&lt;/span&gt;&lt;span lang="EN-US"&gt;build.xml&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以帮助我们自动打包，这个文件对那些在&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中还含有&lt;/span&gt;&lt;span lang="EN-US"&gt;jar&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件的扩展特别有用。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;根目录下，总是会存在一个&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录。&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下面的格式就不一定了，但是基本都会含有&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;三个目录。其中，&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录是用来存放扩展的程序文件和控件格式的资源文件；&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录存放不同语言版本，用于扩展的本地化和国际化；&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录存放图片等资源文件。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;扩展的格式并不一定要拘泥一格，但具体情况需要与&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中的信息联系。记住，无论如何，良好的习惯总是对你有好处的：请把相应的文件放到它们应该放的地方。&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;扩展的基本内容&lt;/span&gt;&lt;/h1&gt;  &lt;h2&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是一个扩展的身份证。这么说并不为过，请看下面就是我们&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件：&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;version&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;RDF&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="http://www.w3.org/&lt;st1:chsdate isrocdate="False" islunardate="False" day="22" month="2" year="1999" w:st="on"&gt;1999/02/22&lt;/st1:chsdate&gt;-rdf-syntax-ns#"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;:&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;em&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="http://www.mozilla.org/2004/em-rdf#"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;about&lt;/span&gt;&lt;span style="color: blue;"&gt;="urn:mozilla:install-manifest"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:name&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;Hello World&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:name&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;{&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="12" unitname="a" w:st="on"&gt;12a&lt;/st1:chmetcnv&gt;1584b-2123-473d-8752-e82e74e3cb11}&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:version&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;0.4&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:version&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:type&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;2&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:type&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;A test extension&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:creator&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;Marvel&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:creator&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:contributor&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;LiuWenmao&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:contributor&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:homepageURL&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;http://marvel.hit.edu.cn/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:homepageURL&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:targetApplication&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;{ec&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8030" unitname="F" w:st="on"&gt;8030f&lt;/st1:chmetcnv&gt;7-c&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="20" unitname="a" w:st="on"&gt;20a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="464" unitname="F" w:st="on"&gt;-464f&lt;/st1:chmetcnv&gt;-9b0e&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="13" unitname="a" w:st="on"&gt;-13a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="a" w:st="on"&gt;3a&lt;/st1:chmetcnv&gt;9e97384}&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:minVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;0.9&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:minVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:maxVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:maxVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:targetApplication&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;RDF&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;可以看得出，这是一个&lt;/span&gt;&lt;span lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;格式的文件。根节点为&lt;/span&gt;&lt;span lang="EN-US"&gt;RDF&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。命名空间为&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;a href="http://www.w3.org/1999/02/22-rdf-syntax-ns"&gt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;，&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;前缀为&lt;/span&gt;&lt;span lang="EN-US"&gt;em&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn4" name="_ftnref4" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[4]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。下面介绍每一个元素和属性的意义：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:name&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;Hello World&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:name&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;{&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="12" unitname="a" w:st="on"&gt;12a&lt;/st1:chmetcnv&gt;1584b-2123-473d-8752-e82e74e3cb11}&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:version&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;0.4&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:version&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:type&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;2&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:type&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;A test extension&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:creator&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;Marvel&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:creator&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:contributor&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;LiuWenmao&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:contributor&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:homepageURL&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;http://marvel.hit.edu.cn/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:homepageURL&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:name&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展的名字，例如我的名字叫"刘文懋"，而我的扩展叫"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"。&lt;/span&gt;&lt;span style="font-family: Wingdings;" lang="EN-US"&gt;&lt;span style=""&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:id&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号，每一个扩展都会有一个不同的&lt;/span&gt;&lt;span lang="EN-US"&gt;GUID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，就如同你的身份证号，用于区分你的扩展与其他人的扩展，所以很明显，全球所有的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;插件的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;都不一样。所以，当你写自己的扩展的时候，需要获得一个全球唯一对&lt;/span&gt;&lt;span lang="EN-US"&gt;GUID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;Andy Hoskinson&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;帮我们完成了这项工作，你可以登录&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://www.hoskinson.net/webservices/guidgeneratorclient.aspx"&gt;http://www.hoskinson.net/webservices/guidgeneratorclient.aspx&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来获得一个&lt;/span&gt;&lt;span lang="EN-US"&gt;GUID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。点击一下&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;Generate GUID&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 宋体;"&gt;按钮，很简单吧，但是这很重要，如果你不想惹麻烦的话！&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;支持"&lt;/span&gt;&lt;span lang="EN-US"&gt;User@Location&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"这种&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的格式。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;请注意，当你在"扩展项"中查看扩展信息的时候，你能看到的只有扩展的&lt;/span&gt;&lt;span lang="EN-US"&gt;name&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;你是看不到的，但是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的确是依靠&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来工作的。正如我们在平时总是称呼各自的名字，但是&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等到登记信息的时候，完全是按照身份证号来区分的。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也是一样的。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:version&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：顾名思义，这是扩展的版本号，没什么多说的。&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:type&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这是类型。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的插件很强，它支持的不只扩展一种。例如：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;type=2&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;时表示扩展（&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Extensions&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;），&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;type=4&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;时表示主题（&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Themes&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;），&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;type= 8&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;时表示地区（&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;），这和本地化有关，&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;type=16&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;时表示插件（&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Plugin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:description&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：扩展的描述，对扩展的简单说明。&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:creator&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：扩展的创建者。&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:contributor&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：扩展的贡献者。可以有多个&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;em:contributor&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，毕竟可以有很多贡献者。&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:homepageURL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：扩展的主页。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;以上几项，除了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;之外，都会出现在&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的"工具"&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;-&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;〉"扩展"项的扩展列表的各项摘要中。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;好，让我们到下一部分：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:targetApplication&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;{ec&lt;st1:chmetcnv unitname="F" sourcevalue="8030" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"&gt;8030f&lt;/st1:chmetcnv&gt;7-c&lt;st1:chmetcnv unitname="a" sourcevalue="20" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"&gt;20a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv unitname="F" sourcevalue="464" hasspace="False" negative="True" numbertype="1" tcsc="0" w:st="on"&gt;-464f&lt;/st1:chmetcnv&gt;-9b0e&lt;st1:chmetcnv unitname="a" sourcevalue="13" hasspace="False" negative="True" numbertype="1" tcsc="0" w:st="on"&gt;-13a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv unitname="a" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"&gt;3a&lt;/st1:chmetcnv&gt;9e97384}&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:id&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:minVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;0.9&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:minVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:maxVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:maxVersion&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:targetApplication&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt; line-height: 12pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:targetApplication&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;本扩展可以被使用的应用程序，它的字节点是对这个应用程序的说明，我们的&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello world&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;仅在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下运行，所以只有一个&lt;/span&gt;&lt;span lang="EN-US"&gt;em:targetApplication&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;节点，如果你认为你开发的扩展可以在&lt;/span&gt;&lt;span lang="EN-US"&gt;mozilla&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的其它应用程序中运行的话，可以在这里多写几个&lt;/span&gt;&lt;span lang="EN-US"&gt;em:targetApplication&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:id&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span lang="EN-US"&gt;em:targetApplication&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号，正如&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展有自己的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号一样，&lt;/span&gt;&lt;span lang="EN-US"&gt;Mozilla&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的每一个应用程序也都有自己的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号。例如&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;Thunderbird&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;等等，他们都需要有自己的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号来进行标识。例如，本扩展使用的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号是&lt;/span&gt;&lt;span lang="EN-US"&gt;{ec&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8030" unitname="F" w:st="on"&gt;8030f&lt;/st1:chmetcnv&gt;7-c&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="20" unitname="a" w:st="on"&gt;20a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="464" unitname="F" w:st="on"&gt;-464f&lt;/st1:chmetcnv&gt;-9b0e&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="13" unitname="a" w:st="on"&gt;-13a&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="a" w:st="on"&gt;3a&lt;/st1:chmetcnv&gt;9e97384}&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:minVersion&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展支持的应用程序的最低版本号，举个例子，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;有很多的功能是&lt;/span&gt;&lt;span lang="EN-US"&gt;FF&lt;st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"&gt;1.0.7&lt;/st1:chsdate&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;使用不了的，或者&lt;/span&gt;&lt;span lang="EN-US"&gt;FF1.0.7&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的一些功能已不被&lt;/span&gt;&lt;span lang="EN-US"&gt;FF1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;支持了，这样的话，每一个扩展都应该有一个&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的适用的版本的范围。最大值和最小值的意义也在于此。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 新宋体; color: maroon;" lang="EN-US"&gt;em:maxVersion&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;说明同上，假设这个值为&lt;/span&gt;&lt;span lang="EN-US"&gt;1.0+&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么你会发现&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;会自动将其禁用，解决方法是你可以将这个值手动改为&lt;/span&gt;&lt;span lang="EN-US"&gt;1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，前提是这个扩展可以在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下正常运行。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;有一些支持&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;旧版本的扩展还会有下列的东东：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:file&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;about&lt;/span&gt;&lt;span style="color: blue;"&gt;="urn:mozilla:extension:file:xyzproxy"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:package&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;content/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:package&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:skin&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;skin/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:skin&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;locale/zh-CN/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;locale/zh-TW/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;locale/en-US/&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:locale&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;Description&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;em:file&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这段东西是像&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;说明了扩展的目录分布。&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;已经不使用这部分了，对应的，将这部分的内容转移到了&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中，只有当&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中没有相应的目录分布的时候，才会回来找。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展的格式所说，扩展包是由&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;三部分组成的。这段就说明了这三部分的分布情况，具体的对应内容参见下部分&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;需要注意的是，上面每一个节点中的值都是以"&lt;/span&gt;&lt;span lang="EN-US"&gt;/&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"结尾的，如果漏掉了这个东西，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就会找不到对应得目录！&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;span style="font-family: 宋体;"&gt;理解&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn5" name="_ftnref5" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;b style=""&gt;&lt;span style="font-size: 16pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[5]&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在分析&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件之前，我们必须理解&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这个概念。作为&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，它的底层是使用了高效并且不能被修改的运行时引擎（&lt;/span&gt;&lt;span lang="EN-US"&gt;runtime engine&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;），在此之上是比较"厚"的可读可修改的解释层。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;代表了&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;提供的所有用户接口——&lt;/span&gt;&lt;span lang="EN-US"&gt;XUL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;CSS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;JavaScript&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、图像、&lt;/span&gt;&lt;span lang="EN-US"&gt; RDF&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、文本和&lt;/span&gt;&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文档。&lt;/span&gt;&lt;span lang="EN-US"&gt;RDF&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;XUL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是最重要的文档。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;从物理层面上说，&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;数据库中的数据。&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;需要获得扩展的信息，所以它会在启动的时候，读入&lt;/span&gt;&lt;span lang="EN-US"&gt;RDF&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，完成对扩展的注册，将扩展的信息存放到&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的内存数据库中。所以一个扩展只有在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展搜索范围中，并且被&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;注册了，它才能称为&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;在逻辑层面上说，&lt;/span&gt;&lt;span lang="EN-US"&gt;Chome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是一组&lt;/span&gt;&lt;span lang="EN-US"&gt;URL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的集合。正如你可以使用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.google.com/"&gt;http://www.google.com&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来访问&lt;/span&gt;&lt;span lang="EN-US"&gt;Google&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的网页一样，你可以&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome://URL &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的方式来访问&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的资源。事实上，这是一种映射关系。例如你的电脑中根目录下存放有一个扩展，其中有一个&lt;/span&gt;&lt;span lang="EN-US"&gt;xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件：&lt;/span&gt;&lt;span lang="EN-US"&gt;/tests/content/package.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，你可以在浏览器中的地址栏中输入：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://marvel.hit.edu.cn:8080/tests/content/%20package.xul"&gt;file:///tests/content/ package.xul&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，这样你就可以查看该文件了，但是在&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中，如果你已经将&lt;/span&gt;&lt;span lang="EN-US"&gt;conten&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录注册了，那么你同样可以在地址栏中输入&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome://test/content/package.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，这样就可以浏览这个文件了。所以从这个角度来说&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以看作一种&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;自己定义的协议，不是吗？&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;说道&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;，不得不说一下&lt;span lang="EN-US"&gt;Jar&lt;/span&gt;文件。&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;支持将&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;的内容全部放在一个&lt;span lang="EN-US"&gt;zip&lt;/span&gt;格式的文件中，这个文件的后缀名为&lt;span lang="EN-US"&gt;.jar&lt;/span&gt;。这个文件可以包括窗口内容、皮肤主题、本地化代码，以及前三个的任意组合。&lt;/pre&gt;&lt;pre&gt;至于&lt;span lang="EN-US"&gt;jar&lt;/span&gt;文件中内容的引用有所不同。例如有一个&lt;span lang="EN-US"&gt;/test/hello.jar&lt;/span&gt;中还有一个&lt;span lang="EN-US"&gt;helloworld.xul&lt;/span&gt;文件，那么该文件引用地址应该为：&lt;/pre&gt;&lt;pre&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;jar:file:///tmp/example.jar!/example.txt&lt;/span&gt;。 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;请注意&lt;span lang="EN-US"&gt;jar&lt;/span&gt;后面有一个感叹号。特别注意的是&lt;span lang="EN-US"&gt;jar&lt;/span&gt;文件的目录分布。&lt;/pre&gt;&lt;pre&gt;例如正常没有压缩的目录排布为：&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;test/content/…&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;test/locale/…&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;test/skin/…&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;但是如果要将其压缩为&lt;span lang="EN-US"&gt;jar&lt;/span&gt;文件，那么需要将其重新排列为：&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;/content/test&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;/locale /test&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;/skin /test&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;这种设计的一个合理解释是&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;可以在运行的时候更快地搜索该压缩文件。&lt;/pre&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;这个文件是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;引入的，用于对一些扩展内容、结构的说明和映射。我的&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件内如如下：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;content&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/content/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;locale&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;en-US&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/locale/en-US/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;locale&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;zh-CN&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/locale/zh-CN/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;skin&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;classic/1.0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/skin/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;overlay&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://browser/content/browser.xul&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://helloworld/content/helloworld-Overlay.xul&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span lang="EN-US"&gt;style&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://global/content/customizeToolbar.xul&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;chrome://helloworld/skin/helloworld.css&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;先看前四行：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;content&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/content/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;locale&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;en-US&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/locale/en-US/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;locale&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;zh-CN&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/locale/zh-CN/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;skin&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;helloworld&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;classic/1.0&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome/skin/&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;根据上一节的叙述，这四行是为了让&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在启动的时候，将本地的目录注册到&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的数据库中。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;我们的&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello world&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展包中包含的内容有&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;三个部分。其中&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包含了美式英语和简体中文的文件，所&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;以一共有四项。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="" lang="EN-US"&gt;Content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的格式为：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;b style=""&gt;&lt;span style="font-size: 10.5pt;" lang="EN-US"&gt;content&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Name&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Location&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;其中，&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包中的类型，这里为&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Name&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包的名字&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;Location&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包文件的位置。注意最后的"&lt;/span&gt;&lt;span lang="EN-US"&gt;/&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"，别忘了，否则扩展是无法加载的！&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;所以，第一行的意思就是：一个叫&lt;/span&gt;&lt;span lang="EN-US"&gt;sample&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;包，&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;我们可以从位置&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome/content/&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;找到它的&lt;/span&gt;&lt;span lang="EN-US"&gt;content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件。这里的路径是相对于&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件的路径而言的相对路径。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;类似的，下面三句定义了&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;skin&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的位置。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;现在，我们已经将本地物理文件与&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;逻辑上的&lt;/span&gt;&lt;span lang="EN-US"&gt;Chrome&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;URL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;建立一个映射，例如：&lt;/span&gt;&lt;span lang="EN-US"&gt;content-&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;〉&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome/content/&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。我们的扩展有一个&lt;/span&gt;&lt;span lang="EN-US"&gt;content.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，位置在&lt;/span&gt;&lt;span lang="EN-US"&gt;/chrome/content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下，那么我们就可以在浏览器的地址栏中输入&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;"&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome://helloworld/content/content.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"来查看该文件，事实上，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也是按照这个&lt;/span&gt;&lt;span lang="EN-US"&gt;URL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来寻找该文件的。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这四行可以与上一节的&lt;/span&gt;&lt;span lang="EN-US"&gt;em:file&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;对照一下，它们在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中实现的功能是一致的。只不过这种写法是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox 1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;引入的。假如你的扩展包中没有&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;而只有&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，那么&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;会解析&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，之后，生成一个&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;接下来的两行：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 17.95pt;"&gt;&lt;span style="" lang="EN-US"&gt;overlay&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://browser/content/browser.xul&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://helloworld/content/helloworld-Overlay.xul&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre style="text-indent: 17.95pt;"&gt;&lt;span style="font-size: 10.5pt;" lang="EN-US"&gt;style&lt;span style=""&gt; &lt;/span&gt;chrome://global/content/customizeToolbar.xul&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://helloworld/skin/helloworld.css&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这两行也是向&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;注册，但这次注册的是你需要重写控件的代码文件（&lt;/span&gt;&lt;span lang="EN-US"&gt;customizeToolbar.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）和控件的样式文件（&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.css&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;）。&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;启动的时候会将&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;合并到&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;browser.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，从而实现自定义控件的加载。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这几个文件的详细内容我们在接下来的部分进行讨论。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-family: 黑体;"&gt;让&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;说"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 黑体;"&gt;"&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;添加控件接下来，我们需要实现一些基本功能。首先添加一个菜单，用户点击之后，可以弹出一个"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"的窗口。接下来，我们熟悉一下其他的控件，例如状态栏等。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的控件是由前台的&lt;/span&gt;&lt;span lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;格式的文件&lt;/span&gt;&lt;span lang="EN-US"&gt;xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和后台的&lt;/span&gt;&lt;span lang="EN-US"&gt;javascript&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;脚本的&lt;/span&gt;&lt;span lang="EN-US"&gt;js&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;两部分内容组成的。前台的&lt;/span&gt;&lt;span lang="EN-US"&gt;xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件定义控件的外观和触发事件，后台的&lt;/span&gt;&lt;span lang="EN-US"&gt;js&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件实现具体的事件，从而实现了表现和实现的分离。&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;span style="font-family: 宋体;"&gt;添加菜单项&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;首先，我们来实现菜单的菜单项。&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;本例的效果是添加一个菜单项，如下图的"&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Click Me&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;！"项：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1032" type="#_x0000_t75" style='width:414.75pt;height:311.25pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image003.jpg" o:title="menu"/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image004.jpg" v:shapes="_x0000_i1032" border="0" height="415" width="553"&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;记得上一节我们在&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome.manifest&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中将&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;browser.xul &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;注册了吗？我们使用了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;overlay&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;chrome://browser/content/browser.xul&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;://helloworld/content/helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，从而&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;在加载默认浏览器文件&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;browser.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的同时，会将&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也加载上去。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;所以，我们需要再&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中加入自己的控件。好了，我写了一个简单的控件&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;menu_Hello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;version&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;id&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="helloworldOverlay"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;type&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="application/x-javascript"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;src&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="chrome://helloworld/content/hello.js"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menu_ToolsPopup"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuitem&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menu_Hello"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;="&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Click Me! "&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;accesskey&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="C"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;position&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="onShowMenu(); "/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 27pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 27pt;"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;下面我们来分析一下各个部分。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;首先，定义了本文件唯一的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号为"&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworldOverlay&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;接着，定义了控件触发事件的脚本文件为&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;chrome://helloworld/content/hello.js&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;然后，我们开始定义控件。首先要找到控件的父控件——至少&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;要知道该把它放在哪里。这里我们找到了"工具"菜单&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;menu_ToolsPopup&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。至于我们怎么知道"工具"菜单的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;menu_ToolsPopup&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的，我推荐使用&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;自带的开发工具&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Dom Inspector&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，至少我是这么知道它的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1031" type="#_x0000_t75" style='width:414.75pt;height:300.75pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image005.jpg" o:title="dom"/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image006.jpg" v:shapes="_x0000_i1031" border="0" height="401" width="553"&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;找到父控件之后，我们就可以自定义控件了：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 44.9pt; text-align: left; text-indent: -9pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;menuitem&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;id&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="menu_Hello"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;label&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Click Me! "&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;accesskey&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="C"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;position&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="onShowMenu(); "/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 44.9pt; text-align: left; text-indent: -9pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这句说明，我们的控件&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;menu_Hello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，显示的文本为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Click Me!&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，快捷键为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;C&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，位置在"工具"菜单的最上面，点击后触发的事件为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;onShowMenu()&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;onShowMenu&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;事件在&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;hello.js&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中定义，正如我们上面所说的）。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;好了，定义完控件的外部属性，我们就需要处理它的触发事件了。打开&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;chrome\content\&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;hello.js&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，输入：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 17.95pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function onShowMenu()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 17.95pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 17.95pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("hello");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 17.95pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这样我们就完成了菜单项的工作。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;如果你现在就像看看效果，那么请转到"部署&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展"部分；如果你还想看看其他的控件以及样式表的使用，可以继续。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;span style="font-family: 宋体;"&gt;添加工具栏&lt;/span&gt;&lt;/h3&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;接下来，我们会添加一个工具栏按钮。从这部分，我们可以知道如何使用工具栏控件，以及如何使用样式。这部分的实际效果如下图：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1030" type="#_x0000_t75" style='width:414.75pt;height:311.25pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image007.jpg" o:title="tool"/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image008.jpg" v:shapes="_x0000_i1030" border="0" height="415" width="553"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;我们修改一下&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件，添加一个叫&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;tbarHello &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;toolbarbutton&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，以及下拉菜单和菜单项。为了简单起见，我去掉了上一节的菜单项的部分：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;/b&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;version&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;xml-stylesheet href=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"chrome://helloworld/skin/helloworld.css"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; type=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"text/css"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;DOCTYPE&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;SYSTEM&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"chrome://helloworld/locale/helloworld.dtd"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;id&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="helloworldOverlay"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;type&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="application/x-javascript"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;src&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="chrome://helloworld/content/hello.js"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;toolbox&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;id&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="navigator-toolbox"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;toolbarpalette&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="BrowserToolbarPalette"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;toolbarbutton&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="tbarHello"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;tooltiptext&lt;/span&gt;&lt;span style="color: blue;"&gt;="Toolbar&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Test"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;type&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="menu-button"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;label&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="Test"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;=" onTbarHello();"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="hello-popup-list"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;onpopupshowing&lt;/span&gt;&lt;span style="color: blue;"&gt;="onShowMenu();"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menu&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="hello-tools-menu"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;="&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Manage "&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="toolbutton-popup-tools"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuitem&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menuitem-add"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;="Add"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;tooltiptext&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Add your name"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="addName();"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuitem&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menuitem-remove"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;="&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Remove "&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;tooltiptext&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="Remove your name"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="removeName();"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;menu&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuseparator&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuitem&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menuitem-state"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;=" State "&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;tooltiptext&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;Show your state "&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="showState();"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;menupopup&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;toolbarbutton&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;toolbarpalette&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;toolbox&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;下面我们来分析这段代码：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;1&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;导入控件样式：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;xml-stylesheet href=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"chrome://helloworld/skin/helloworld.css"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; type=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"text/css"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;我们需要对下面的控件进行修饰，所以需要引入&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;css&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;样式，这与&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;HTTP&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;css&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;类似。上面这句说明，我们可能会用到&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;chrome://helloworld/skin/helloworld.css&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;定义的控件样式，事实上的确如此。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;2 &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;定义控件&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;navigator-toolbox&amp;gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;……&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&amp;lt;/navigator-toolbox&amp;gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就是定义控件的代码。首先我们找到&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;navigator-toolbox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;节点，就是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的导航栏。然后在上面添加一个按钮&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;tbarHello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，类型为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;menu-button&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，，触发事件为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;onTbarHello()&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。此外还包括了一个菜单、三个菜单项。具体的说明这里就省略了，你可以使用&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Dom Inspector&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来查看各个控件的类型和属性值。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;3 &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;定义控件样式&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也许你会说，我只看到了你导入了样式文件，但是具体它是怎么使用的呢？或者说控件和它的样式是怎么管联起来的呢？&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;我们可以来看一看我们导入的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;CSS&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="" lang="EN-US"&gt;Helloworld.css&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;#tbarHello {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;list-style-image: url("chrome://helloworld/skin/qq_big.png");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;toolbar[iconsize="small"] #tbarHello {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;list-style-image: url("chrome://helloworld/skin/qq_small.png");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;我们可以看到，这个文件定义了一个&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;tbarHello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;list-style-image&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;属性&lt;/span&gt;&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn6" name="_ftnref6" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[6]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;list-style-image&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的一般语法是：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;list-style-image: url(…)|none&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这个属性是用来显示特定&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;list-it&lt;/span&gt;&lt;span lang="EN-US"&gt;em&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的图像的，即用后面&lt;/span&gt;&lt;span lang="EN-US"&gt;url&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中的图像来显示该控件。这里我&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;们使用的是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;chrome://helloworld/skin/qq_big.png&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;但是仅仅有这句还是不够的。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;提供了两种图标的显示方法，一种是大图标，另一种是小图标。大图标默认的大小为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;24x24&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，小图标默认的大小为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;16x16&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。刚才我们定义的图标是大图标，所以我们需要定义小图标，方法为&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;toolbar[iconsize="small"] #tbarHello{}&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;这三行。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;这样我们定义了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;toolbar&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的显示图像。当然还有其他的属性可以定义，但是这里我们只定义了它的图像。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;4 &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;实现控件功能&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;这部分尽管是最重要的，但是在本例这里不是重点。所以可以用最简单的方式实现&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中需要使用的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;onTbarHello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;addName&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;removeName&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;showState&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;函数。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;我们的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;hello.js&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;代码如下：&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center; text-indent: 21.75pt;" align="center"&gt;&lt;b style=""&gt;&lt;span style="" lang="EN-US"&gt;Hello.js&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function addName()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("Add name");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function removeName()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("Remove name");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function showState()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("Show state");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function onShowMenu()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.dump("hello");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("hello");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;function onTbarHello()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;window.alert("hello");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;至此，我们完成了控件的样式的定义和使用。你可以加入更多的样式，完成更复杂的功能，只要你有足够的想象力。&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-family: 黑体;"&gt;实现本地化&lt;/span&gt;&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn7" name="_ftnref7" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;b style=""&gt;&lt;span style="font-size: 16pt; font-family: Arial;" lang="EN-US"&gt;[7]&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;好了，到目前为止，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;可以说"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"了。但问题是世界上还有十三亿中国人，那么显然"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"使他们认为&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是一个洋玩意儿，它们可能会给&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;起一个名字叫"洋狐狸"&lt;/span&gt;&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn8" name="_ftnref8" title=""&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span class="MsoFootnoteReference"&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[8]&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;。更糟的是，这十三亿人中很多人只认识中文，不懂得&lt;/span&gt;&lt;span lang="EN-US"&gt;abc&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么只有英文的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;不会是他们的选择。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span style="font-family: 宋体;"&gt;在本节中，我们讲述的是如何在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中实现扩展的本地化。我们需要重写&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld-Overlay.xul &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="" lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;/b&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;xml&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;version&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;xml-stylesheet href=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"chrome://helloworld/skin/helloworld.css"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; type=&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"text/css"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;DOCTYPE&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;SYSTEM&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;"chrome://helloworld/locale/helloworld.dtd"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;id&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="helloworldOverlay"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;xmlns&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;script&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;type&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="apKlication/x-javascript"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;src&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="chrome://helloworld/content/hello.js"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuKopup&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menu_ToolsPopup"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuitem&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;id&lt;/span&gt;&lt;span style="color: blue;"&gt;="menu_Hello"&lt;/span&gt;&lt;span style="color: fuchsia;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;label&lt;/span&gt;&lt;span style="color: blue;"&gt;="&amp;amp;btn_Hello.label;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;accesskey&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="&amp;amp;btn_Hello.accesskey;"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;position&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="1"&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: fuchsia;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: red;" lang="EN-US"&gt;oncommand&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;="onShowMenu(); "/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon;"&gt;menuKopup&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left; text-indent: 18pt;" align="left"&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: maroon;" lang="EN-US"&gt;overlay&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 新宋体; color: blue;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;注意到和第一个版本有什么不同吗？相信你已经发现了&lt;/span&gt;&lt;span lang="EN-US"&gt;menu_Hello&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;label&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;已经变成了&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;amp;btn_Hello.label;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，同样的&lt;/span&gt;&lt;span lang="EN-US"&gt;accesskey&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也变成了这种形式。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如果你学过&lt;/span&gt;&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;语法，你可能会想到这可能是转义。例如，在&lt;/span&gt;&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中"&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"被转义成为了"&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;amp;lt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;对，这也是一种转义，但是略微不同的是，&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;amp;btn_Hello.label;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&amp;amp;btn_Hello.accesskey;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;其实&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;或者其他的标准都没有定义它们的含义，这是有你自己来决定的。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;你需要在你导入的&lt;/span&gt;&lt;span lang="EN-US"&gt;dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中进行说明，本例中，你需要在&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome://helloworld/locale/helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;添加相应的定义。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;也许到这一步你会问，这个&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件是哪一个呢？到底是&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US\ helloworld.dtd &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;还是&lt;/span&gt; &lt;span lang="EN-US"&gt;chrome\locale\zh-CN helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;呢？&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;其实，这是由&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;决定的。如果你的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那就是&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US\ helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，如果你的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那就是&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\ zh-CN \ helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;你需要做的工作就是就是告诉&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;你的&lt;/span&gt;&lt;span lang="EN-US"&gt;en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件夹在什么地方。现在你要在&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下分别建立一个&lt;/span&gt;&lt;span lang="EN-US"&gt;contents.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件。&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的&lt;/span&gt;&lt;span lang="EN-US"&gt;contents.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;如下：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center; text-indent: 21.75pt;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 12pt;" lang="EN-US"&gt;contents.rdf&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="pi1"&gt;xml version="1.0" &lt;/span&gt;&lt;span class="m1"&gt;?&amp;gt;&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/contents.xml##"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;-&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;RDF:RDF&lt;/span&gt;&lt;span class="ns1"&gt; xmlns:RDF&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;&lt;span style="color: red;"&gt;http://www.w3.org/&lt;st1:chsdate year="1999" month="2" day="22" islunardate="False" isrocdate="False" w:st="on"&gt;1999/02/22&lt;/st1:chsdate&gt;-rdf-syntax-ns#&lt;/span&gt;&lt;/b&gt;&lt;span class="m1"&gt;"&lt;/span&gt;&lt;span class="ns1"&gt; xmlns:chrome&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;&lt;span style="color: red;"&gt;http://www.mozilla.org/rdf/chrome#&lt;/span&gt;&lt;/b&gt;&lt;span class="m1"&gt;"&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span class="m1"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="t1"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;RDF:Seq about&lt;/span&gt;&lt;/span&gt;&lt;span class="m1"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;="&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;urn:mozilla:locale:root&lt;/span&gt;&lt;/b&gt;&lt;span class="m1"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;RDF:li&lt;/span&gt; &lt;span class="t1"&gt;resource&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;urn:mozilla:locale:zh-CN&lt;/b&gt;&lt;span class="m1"&gt;" /&amp;gt;&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="t1"&gt;RDF:Seq&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;- &lt;span class="m1"&gt;&amp;lt;!--&lt;/span&gt; &lt;/span&gt;&lt;span style="color: rgb(136, 136, 136);" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;locale information &lt;/span&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;--&amp;gt;&lt;/span&gt; &lt;script&gt; f(clean); &lt;/script&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/contents.xml##"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;-&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;RDF:Description about&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;urn:mozilla:locale:en-US&lt;/b&gt;&lt;span class="m1"&gt;"&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/contents.xml##"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;-&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;chrome:packages&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/contents.xml##"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red;"&gt;-&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;RDF:Seq about&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;urn:mozilla:locale: en-US:packages&lt;/b&gt;&lt;span class="m1"&gt;"&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 24pt; text-indent: -24pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t1"&gt;RDF:li&lt;/span&gt; &lt;span class="t1"&gt;resource&lt;/span&gt;&lt;span class="m1"&gt;="&lt;/span&gt;&lt;b&gt;urn:mozilla:locale: en-US:helloworld&lt;/b&gt;&lt;span class="m1"&gt;" /&amp;gt;&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="t1"&gt;RDF:Seq&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="t1"&gt;chrome:packages&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="t1"&gt;RDF:Description&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt;"&gt;&lt;span class="b1"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt; &lt;span class="m1"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="t1"&gt;RDF:RDF&lt;/span&gt;&lt;span class="m1"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的&lt;/span&gt;&lt;span lang="EN-US"&gt;contents.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;也类似，只不过把所有的&lt;/span&gt;&lt;span lang="EN-US"&gt;zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;换成&lt;/span&gt;&lt;span lang="EN-US"&gt;en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;即可。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;最后，我们要在相应的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;目录下建立不同&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。还是以英语为例，我们新建&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US\helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，内容如下：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center; text-indent: 21.75pt;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 12pt;" lang="EN-US"&gt;helloworld.dtd&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 12pt;" lang="EN-US"&gt;(en-US)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;btn_Hello.label&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Click Me!"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;btn_Hello.accesskey &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"C"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;tbarHello.label &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Test"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;tbarHello.tip&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Name test"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;manage.label&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Manage"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;manage.tip &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Management"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;add.label &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Add"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;add.tip &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Add your name"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;remove.label &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Remove"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;remove.tip&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Remove your name"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;state.label &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"State"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;!ENTITY&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;state.tip &lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;"Show your state"&amp;gt;&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;在本例中，当&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;解析到&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld-Overlay.xul&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中的"&lt;/span&gt;&lt;span lang="EN-US"&gt;label="&amp;amp;btn_Hello.label;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"时，并且&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;为&lt;/span&gt;&lt;span lang="EN-US"&gt;en-US&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么它就会到&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\en-US\helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件中寻找相应的&lt;/span&gt;&lt;span lang="EN-US"&gt;btn_Hello.label&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;项，即"&lt;/span&gt;&lt;span lang="EN-US"&gt;"Click Me!&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这样，我们就实现了动态加载控件的&lt;/span&gt;&lt;span lang="EN-US"&gt;label&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，同样的，我们可以加载&lt;/span&gt;&lt;span lang="EN-US"&gt;tip&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;类似的，我们可以填写&lt;/span&gt;&lt;span lang="EN-US"&gt;chrome\locale\zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;下的&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件。假如系统的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;为&lt;/span&gt;&lt;span lang="EN-US"&gt;zh-CN&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，那么我们的&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;就会说中文了。&lt;/span&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这样，当&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;每次启动的时候，会根据系统的&lt;/span&gt;&lt;span lang="EN-US"&gt;locale&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来动态的加载不同的&lt;/span&gt;&lt;span lang="EN-US"&gt;helloworld.dtd&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;部署&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;现在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的部署方式一共有两种：&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-family: 黑体;"&gt;打包部署&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这种方式是最普遍的，可以得到&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的所有版本的支持。我们可以将完成的扩展目录压缩成&lt;/span&gt;&lt;span lang="EN-US"&gt;zip&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;格式的文件，后缀名为&lt;/span&gt;&lt;span lang="EN-US"&gt;.xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;当涉及到扩展中有&lt;/span&gt;&lt;span lang="EN-US"&gt;jar&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件的时候，打包过程会比较复杂，因为存在多次压缩的过程。为了简单起见，你可以自己编写一个&lt;/span&gt;&lt;span lang="EN-US"&gt;build.xml&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;然后使用&lt;/span&gt;&lt;span lang="EN-US"&gt;ant&lt;a style="" href="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.htm#_ftn9" name="_ftnref9" title=""&gt;&lt;span style=""&gt;&lt;!--[if !supportFootnotes]--&gt;&lt;span style="font-size: 10.5pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;[9]&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;来组装。下面就是一个文件的样例：&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;project name="helloworld" default="createxpi"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;target name="createjar"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;zip destfile="helloworld.jar" basedir="." &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;includes="content/**" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/target&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;target name="createxpi" depends="createjar"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;zip destfile="helloworld.xpi"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;zipfileset dir="." includes="helloworld.jar" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;prefix="chrome" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;zipfileset dir="." includes="install.rdf" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &amp;lt;/zip&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/target&amp;gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 9pt;" lang="EN-US"&gt;&amp;lt;/project&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;安装有两种方式，你可以将这个&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件上传到&lt;/span&gt;&lt;span lang="EN-US"&gt;Web&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;服务器上，但前提是该服务器能实现&lt;/span&gt;&lt;span lang="EN-US"&gt;application/x-xpinstall&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;功能。另一种方法是在&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;中选择"文件"&lt;/span&gt;&lt;span lang="EN-US"&gt;-&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;〉"打开文件"，选择该&lt;/span&gt;&lt;span lang="EN-US"&gt;xpi&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;文件即可。&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-family: 黑体;"&gt;直接部署&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Firefox1.5&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;支持这种部署方式。这种方式特别适合调试扩展。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;你可以直接到&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展的系统目录，一般为"&lt;/span&gt;&lt;span lang="EN-US"&gt;%SYSTEM_DRIVER%:\Documents and Settings\%User%\Application Data\Mozilla\Firefox\Profiles\ default\extensions&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;建立一个文本文件，文件内容为你的扩展的位置。例如我的是"&lt;/span&gt;&lt;span lang="EN-US"&gt;E:\My Documents\Visual Studio Projects\firefox\helloworld\chrome\content&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"，文件名为扩展的&lt;/span&gt;&lt;span lang="EN-US"&gt;ID&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;号，本例为&lt;/span&gt;&lt;span lang="EN-US"&gt;{&lt;st1:chmetcnv unitname="a" sourcevalue="12" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on"&gt;12a&lt;/st1:chmetcnv&gt;1584b-2123-473d-8752-e82e74e3cb11}&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;保存文件后，重启&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;即可。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;无论用哪种方式，&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;启动之后，都会加载扩展。你可以到"工具"&lt;/span&gt;&lt;span lang="EN-US"&gt;-&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;〉"扩展项"中查看具体的内容，信息应该与你的&lt;/span&gt;&lt;span lang="EN-US"&gt;install.rdf&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;内容一致。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1027" type="#_x0000_t75" style='width:300pt;height:225pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image009.png" o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image010.jpg" v:shapes="_x0000_i1027" border="0" height="300" width="400"&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1028" type="#_x0000_t75" style='width:275.25pt;height:176.25pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image011.png" o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image012.jpg" v:shapes="_x0000_i1028" border="0" height="235" width="367"&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: left;" align="left"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;调试&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;你可以在控制台中对&lt;/span&gt;&lt;span lang="EN-US"&gt;firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;进行调试。&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的控制台类似于&lt;/span&gt;&lt;span lang="EN-US"&gt;C&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;语言的控制台，你可以将一些变量的值打印出来，或是可以打印出一些控制的信息，这些信息对你调试&lt;/span&gt;&lt;span lang="EN-US"&gt;firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的扩展都是十分有用的。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;首先，你需要将这个功能打开，在地址栏中输入：&lt;/span&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;about:config&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;此时你会发现有很多&lt;/span&gt;&lt;span lang="EN-US"&gt;firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的配置项，怎么有点像&lt;/span&gt;&lt;span lang="EN-US"&gt;windows&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的注册表呢？&lt;/span&gt;&lt;span lang="EN-US"&gt;That's right&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，这就是&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的注册表，你可以在这里放入一些定制的值，实现特定的功能。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;我们需要新建一个&lt;/span&gt;&lt;span lang="EN-US"&gt;Boolean&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;类型的配置项&lt;/span&gt; &lt;span style="font-family: 宋体;"&gt;"&lt;/span&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;browser.dom.window.dump.enabled&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 宋体;"&gt;"，它的值为&lt;/span&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;true&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;然后，在你的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的快捷方式的属性中，把"目标"项添加一个"&lt;/span&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;-console&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: 宋体;"&gt;"，例如我的就改为了&lt;/span&gt;&lt;span lang="EN-US"&gt;"C:\Program Files\Mozilla Firefox\firefox.exe" &lt;b style=""&gt;–console&lt;/b&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，这样每次&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;启动的时候都会出现一个控制台。当然你也可以在命令行中输入上面的命令，但是你应该知道最简单的方式工作的最好，不是吗？&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape  id="_x0000_i1026" type="#_x0000_t75" style='width:275.25pt;height:354.75pt'&gt;  &lt;v:imagedata src="Hello%20World%20Firefox.files/image013.png" o:title=""/&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://marvel.hit.edu.cn:8080/text/firefox/Hello%20World%20Firefox.files/image014.jpg" v:shapes="_x0000_i1026" border="0" height="473" width="367"&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;最后，你可以在你的程序中添加&lt;/span&gt;&lt;span lang="EN-US"&gt;window.dump()&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;函数。例如：&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;window.dump("Hello world!\n");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这样，当程序执行到这里的时候，控制台上就会出现"&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello world&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;"的字样了。&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;获得&lt;/span&gt;&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的源代码&lt;/span&gt;&lt;/h1&gt;  &lt;pre&gt;你可以从以下地址获得本的实验的&lt;span lang="EN-US"&gt;Hello World&lt;/span&gt;代码： &lt;span lang="EN-US"&gt;http://marvel.hit.edu.cn:8080/text/firefox/&lt;a href="http://marvel.hit.edu.cn:8080/text/firefox/helloworld.xpi"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;helloworld.xpi&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;贡献&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;社区&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span style="font-family: 宋体;"&gt;如果你想写自己的&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;扩展，或者想为&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;做些东西，可以登录&lt;/span&gt;&lt;span lang="EN-US"&gt;mozilla&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的开发网站：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.mozdev.org/"&gt;http://www.mozdev.org/&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。希望你也能成为&lt;/span&gt;&lt;span lang="EN-US"&gt;Firefox&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的一名开发者。&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span lang="EN-US"&gt;Contact Me&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;本人能力有限，一定有地方讲的不正确或是不确切，欢迎来信交流。我的&lt;/span&gt;&lt;span lang="EN-US"&gt;Email&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是&lt;/span&gt;&lt;span lang="EN-US"&gt;liuwenmao@hit.edu.cn&lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-family: 宋体;"&gt;参考文献&lt;/span&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;[1] &lt;st1:place w:st="on"&gt;&lt;st1:placename w:st="on"&gt;Mozilla&lt;/st1:placename&gt; &lt;st1:placename w:st="on"&gt;Developer&lt;/st1:placename&gt;  &lt;st1:placetype w:st="on"&gt;Center&lt;/st1:placetype&gt;&lt;/st1:place&gt;,&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Building an Extension, 15 November 2005, &lt;a href="http://developer.mozilla.org/en/docs/Building_an_Extension"&gt;http://developer.mozilla.org/en/docs/Building_an_Extension&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;[2] &lt;span class="description"&gt;Brian Duff, Writing an Extension for Firefox ,&lt;/span&gt; &lt;span class="description"&gt;October 02, 2004,&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.orablogs.com/duffblog/archives/000536.html"&gt;http://www.orablogs.com/duffblog/archives/000536.html&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.75pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div &gt;&lt;br&gt;--&lt;br&gt; &lt;div&gt;海阔天空，做什么就记什么。主要是 Ubuntu Linux 和 Latex 及编程相关的东东： http://hai-kuo.blogspot.com/&amp;nbsp;&lt;/div&gt; &lt;/div&gt;&lt;br&gt;&lt;!-- footer --&gt;&lt;br&gt;&lt;hr&gt; &lt;a style="font-size:14px;line-height:15px; color:#000; text-decoration:none" href="http://event.mail.163.com/chanel/xyq.htm?from=163_NO7" target="_blank"&gt;&lt;span style="text-decoration:underline; color:blue"&gt;劲 爆 150 万 同 时 在 线，众 人 追 捧 梦 幻 西 游 &lt;/span&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-8660667283273784187?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/8660667283273784187/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=8660667283273784187' title='227 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/8660667283273784187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/8660667283273784187'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_31.html' title='开发你的第一个Firefox扩展'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>227</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-5180131322457928519</id><published>2007-07-30T09:32:00.003-07:00</published><updated>2007-07-30T09:32:56.066-07:00</updated><title type='text'>firefox扩展开发(七) ： 键盘快捷键</title><content type='html'>&lt;h1&gt;firefox扩展开发(七) ： 键盘快捷键  &lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年06月24日 08:41PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91" class="tag"&gt;扩展开发&lt;/a&gt; 	             &lt;/div&gt;                 &lt;p&gt;键盘快捷键是一个应用程序不可缺少的部分，最常见的地方在菜单栏中，在XUL中添加键盘快捷键是很简单的，只需要设置控件的accesskey属性即可：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menubar&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menu&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;file-menu&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;文件(F)&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102); background-color: rgb(255, 255, 0);"&gt; accesskey&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);"&gt;&amp;quot;f&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menupopup&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;file-popup&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menuitem&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;close-command&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;关闭(X)&amp;quot; &lt;/span&gt; &lt;span style="color: rgb(0, 0, 102); background-color: rgb(255, 255, 0);"&gt;accesskey&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);"&gt; &amp;quot;x&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/menupopup&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/menu&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/menubar&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;当然，accesskey属性也可以设置在其他控件上（比如按钮）。&lt;/p&gt; &lt;p&gt;如果要设置全局快捷键，这个时候就要用到&amp;lt;key&amp;gt;标签，每个&amp;lt;key&amp;gt;标签设置一个快捷键，最后把所有的&amp;lt;key&amp;gt;标签包含在一个&amp;lt;keyset&amp;gt;标签中即可：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;keyset&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;key&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;key1&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;modifiers&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;control&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; key&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;Q&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(&amp;#39;你按了快捷键crtl+Q&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;key&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;key2&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;modifiers&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;control alt&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; key&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;C&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(&amp;#39;你按了快捷键crtl+alt+C&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;key&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;key3&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;keycode&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;VK_F6&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(&amp;#39;你按了快捷键F6&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/keyset&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;这里介绍了设置全局快捷键的3种情况：&lt;/p&gt; &lt;p&gt;第9行，设置的快捷键是crtl+q，modifiers就是通常所说的修饰键，modifiers可以取control、alt、meta、shift，分别代表了键盘上的ctrl、alt、meta、shift键。&lt;/p&gt; &lt;p&gt;第10行，设置的快捷键是ctrl+alt+c，演示了如何设置有两个修饰键的情况，只需把他们用空格分开即可。&lt;/p&gt; &lt;p&gt;第11行，设置的快捷键是F6，值得注意的是，前面两行中指示快捷键的属性是key，直接指出键盘上的字母值，但是碰到像F1、F2这样的功能键， 还有TAB和回车这样的按键，就没法通过key属性设置了，这个时候只有通过keycode设置，其实，键盘上的每个键都对应了一个keycode值，这 个值一般以"VK_"开头，下面的表格列出了常用的keycode值，对应的按键从后缀就可以看出：&lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;table style="border: 1px solid white;" class="fullwidth-table"&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt;VK_CANCEL&lt;/td&gt;             &lt;td&gt;VK_BACK&lt;/td&gt;             &lt;td&gt;VK_TAB&lt;/td&gt;             &lt;td&gt;VK_CLEAR&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_RETURN&lt;/td&gt;             &lt;td&gt;VK_ENTER&lt;/td&gt;             &lt;td&gt;VK_SHIFT&lt;/td&gt;             &lt;td&gt;VK_CONTROL&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_ALT&lt;/td&gt;             &lt;td&gt;VK_PAUSE&lt;/td&gt;             &lt;td&gt;VK_CAPS_LOCK&lt;/td&gt;             &lt;td&gt;VK_ESCAPE&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_SPACE&lt;/td&gt;             &lt;td&gt;VK_PAGE_UP&lt;/td&gt;             &lt;td&gt;VK_PAGE_DOWN&lt;/td&gt;             &lt;td&gt;VK_END&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_HOME&lt;/td&gt;             &lt;td&gt;VK_LEFT&lt;/td&gt;             &lt;td&gt;VK_UP&lt;/td&gt;             &lt;td&gt;VK_RIGHT&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_DOWN&lt;/td&gt;             &lt;td&gt;VK_PRINTSCREEN&lt;/td&gt;             &lt;td&gt;VK_INSERT&lt;/td&gt;             &lt;td&gt;VK_DELETE&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_0&lt;/td&gt;             &lt;td&gt;VK_1&lt;/td&gt;             &lt;td&gt;VK_2&lt;/td&gt;             &lt;td&gt;VK_3&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_4&lt;/td&gt;             &lt;td&gt;VK_5&lt;/td&gt;             &lt;td&gt;VK_6&lt;/td&gt;             &lt;td&gt;VK_7&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_8&lt;/td&gt;             &lt;td&gt;VK_9&lt;/td&gt;             &lt;td&gt;VK_SEMICOLON&lt;/td&gt;             &lt;td&gt;VK_EQUALS&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_A&lt;/td&gt;             &lt;td&gt;VK_B&lt;/td&gt;             &lt;td&gt;VK_C&lt;/td&gt;             &lt;td&gt;VK_D&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_E&lt;/td&gt;             &lt;td&gt;VK_F&lt;/td&gt;             &lt;td&gt;VK_G&lt;/td&gt;             &lt;td&gt;VK_H&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_I&lt;/td&gt;             &lt;td&gt;VK_J&lt;/td&gt;             &lt;td&gt;VK_K&lt;/td&gt;             &lt;td&gt;VK_L&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_M&lt;/td&gt;             &lt;td&gt;VK_N&lt;/td&gt;             &lt;td&gt;VK_O&lt;/td&gt;             &lt;td&gt;VK_P&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_Q&lt;/td&gt;             &lt;td&gt;VK_R&lt;/td&gt;             &lt;td&gt;VK_S&lt;/td&gt;             &lt;td&gt;VK_T&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_U&lt;/td&gt;             &lt;td&gt;VK_V&lt;/td&gt;             &lt;td&gt;VK_W&lt;/td&gt;             &lt;td&gt;VK_X&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_Y&lt;/td&gt;             &lt;td&gt;VK_Z&lt;/td&gt;             &lt;td&gt;VK_NUMPAD0&lt;/td&gt;             &lt;td&gt;VK_NUMPAD1&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_NUMPAD2&lt;/td&gt;             &lt;td&gt;VK_NUMPAD3&lt;/td&gt;             &lt;td&gt;VK_NUMPAD4&lt;/td&gt;             &lt;td&gt;VK_NUMPAD5&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_NUMPAD6&lt;/td&gt;             &lt;td&gt;VK_NUMPAD7&lt;/td&gt;             &lt;td&gt;VK_NUMPAD8&lt;/td&gt;             &lt;td&gt;VK_NUMPAD9&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_MULTIPLY&lt;/td&gt;             &lt;td&gt;VK_ADD&lt;/td&gt;             &lt;td&gt;VK_SEPARATOR&lt;/td&gt;             &lt;td&gt;VK_SUBTRACT&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_DECIMAL&lt;/td&gt;             &lt;td&gt;VK_DIVIDE&lt;/td&gt;             &lt;td&gt;VK_F1&lt;/td&gt;             &lt;td&gt;VK_F2&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F3&lt;/td&gt;             &lt;td&gt;VK_F4&lt;/td&gt;             &lt;td&gt;VK_F5&lt;/td&gt;             &lt;td&gt;VK_F6&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F7&lt;/td&gt;             &lt;td&gt;VK_F8&lt;/td&gt;             &lt;td&gt;VK_F9&lt;/td&gt;             &lt;td&gt;VK_F10&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F11&lt;/td&gt;             &lt;td&gt;VK_F12&lt;/td&gt;             &lt;td&gt;VK_F13&lt;/td&gt;             &lt;td&gt;VK_F14&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F15&lt;/td&gt;             &lt;td&gt;VK_F16&lt;/td&gt;             &lt;td&gt;VK_F17&lt;/td&gt;             &lt;td&gt;VK_F18&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F19&lt;/td&gt;             &lt;td&gt;VK_F20&lt;/td&gt;             &lt;td&gt;VK_F21&lt;/td&gt;             &lt;td&gt;VK_F22&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_F23&lt;/td&gt;             &lt;td&gt;VK_F24&lt;/td&gt;             &lt;td&gt;VK_NUM_LOCK&lt;/td&gt;             &lt;td&gt;VK_SCROLL_LOCK&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_COMMA&lt;/td&gt;             &lt;td&gt;VK_PERIOD&lt;/td&gt;             &lt;td&gt;VK_SLASH&lt;/td&gt;             &lt;td&gt;VK_BACK_QUOTE&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_OPEN_BRACKET&lt;/td&gt;             &lt;td&gt;VK_BACK_SLASH&lt;/td&gt;             &lt;td&gt;VK_CLOSE_BRACKET&lt;/td&gt;             &lt;td&gt;VK_QUOTE&lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td&gt;VK_HELP&lt;/td&gt;             &lt;td&gt;&amp;nbsp;&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt;显示效果：&lt;/p&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/xul7-1.png" alt=""&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/ &lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-5180131322457928519?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/5180131322457928519/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=5180131322457928519' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5180131322457928519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5180131322457928519'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_6208.html' title='firefox扩展开发(七) ： 键盘快捷键'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-3211526848454401584</id><published>2007-07-30T09:32:00.001-07:00</published><updated>2007-07-30T09:32:13.078-07:00</updated><title type='text'>firefox扩展开发(六) ： 关于event对象</title><content type='html'>&lt;h1&gt;firefox扩展开发(六) ： 关于event对象&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年06月03日 02:50PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91" class="tag"&gt;扩展开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/event" class="tag"&gt;event&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/160.html" class="down" title="下一篇"&gt;firefox扩展开发(七) ： 键盘快捷键  &lt;/a&gt;&lt;/small&gt;                &lt;p&gt;上一篇我们看到了如何用javascript驱动界面上的控件，现在我们看看在事件被触发时，如何获得更详细的信息。&lt;/p&gt; &lt;p&gt;每当某个事件被触发（比如控件被点击或激活、鼠标移动到控件上等等），有关这个事件的详细信息都被储存到event对象中，并可以在事件处理函数中 进行查看，比如上一篇中的第二个例子，就是通过 event.target.tagName 获得被激活的控件的标签名称，event还有更多的属性，让我们看个例子：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;script&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;function ShowMouseXY(event){&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; var document_xy = &amp;quot;X:&amp;quot; + event.clientX + &amp;quot; Y:&amp;quot; + event.clientY;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; var screen_xy = &amp;quot;X:&amp;quot; + event.screenX + &amp;quot; Y:&amp;quot; + event.screenY;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; document.getElementById(&amp;quot;document&amp;quot;).value = &amp;quot;鼠标在文档中的位置：&amp;nbsp; &amp;quot; + document_xy;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; document.getElementById(&amp;quot;screen&amp;quot;).value = &amp;quot;鼠标在屏幕中的位置：&amp;nbsp; &amp;quot; + screen_xy;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;}&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/script&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;document&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; width&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;800&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;height&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;600&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; onmousemove&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;ShowMouseXY(event);&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;这里用到了4个event中的属性，clientX、clientY、screenX、screenY，分别是事件触发时，鼠标相对文档的xy坐标 值和相对整个屏幕的xy坐标值，第21行在hbox上设置了onmousemove的事件属性，每当鼠标在这个hbox上移动，就会触发函数显示当前鼠标 的位置（鼠标没有被抓下来）:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-100.png" height="213" width="414"&gt;&lt;/p&gt; &lt;p&gt;上一篇的第二个例子，我们用event.target引用了当前被激活的控件，通过事件冒泡在vbox上识别，与其相对的，还有一个event.currentTarget属性，引用的是事件冒泡最终传递给的控件：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;script&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; function who_am_i(event)&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; message = &amp;quot;我是&amp;quot; + &lt;span style="background-color: rgb(255, 255, 153);"&gt;event.currentTarget.tagName&lt;/span&gt;  + &amp;quot;。你点击了&amp;quot; + &lt;span style="background-color: rgb(255, 255, 153);"&gt;event.target.tagName&lt;/span&gt;;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert(message);&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/script&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;who_am_i(event)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;OK&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;checkbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;Save backup&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&amp;nbsp;显示效果：&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/xul6-1.png" alt="" height="325" width="388"&gt;&lt;/p&gt; &lt;p&gt;关于event更多的属性，可以参考 &lt;a href="http://xulplanet.com/references/objref/Event.html" target="_blank"&gt;http://xulplanet.com/references/objref/Event.html&lt;/a&gt;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt; http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-3211526848454401584?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/3211526848454401584/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=3211526848454401584' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3211526848454401584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3211526848454401584'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox-event.html' title='firefox扩展开发(六) ： 关于event对象'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-6257445512795545366</id><published>2007-07-30T09:31:00.001-07:00</published><updated>2007-07-30T09:31:19.355-07:00</updated><title type='text'>firefox扩展开发(五) ： 驱动XUL界面</title><content type='html'>&lt;br clear="all"&gt;&lt;h1&gt;firefox扩展开发(五) ： 驱动XUL界面&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年06月02日 03:42PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95%E5%BC%80%E5%8F%91" class="tag"&gt;扩展开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/javascript" class="tag"&gt;javascript&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/130.html" class="down" title="下一篇"&gt;firefox扩展开发(六) ： 关于event对象&lt;/a&gt;&lt;/small&gt;                &lt;p&gt;前面几节，讨论了怎么用XUL创建窗口控件，这样我们就能创建出漂亮的程序界面，但是现在点击窗口中的控件，却什么也不会发生，接下来我们来看看怎样驱动界面中的控件。&lt;/p&gt; &lt;p&gt;大家都知道，在HTML中，同样也有简单的控件，比如按钮、单选、复选框，主要用HTML中的&amp;lt;input&amp;gt;标签来实现，HTML中是 怎样驱动这些控件的呢？一般是通过诸如onclick、onfocus、onmouseover等等事件属性，通过事件驱动，再配合javascript 来完成，比如：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="html4strict" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/input.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;input&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt; &amp;quot;button&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;onclick&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(&amp;#39;我被点击了！&amp;#39;)&amp;quot;&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;如上代码在HTML中创建一个普通的按钮，点击它时，弹出"我被点击了！"的对话框。&lt;/p&gt; &lt;p&gt;在XUL中，驱动控件的方法和HTML基本相同，并且，也是通过javascript来完成，在XUL里，最有用的事件属性是oncommand，当控件被激活时就会出发这个事件，比如按钮被点击，单选复选框被点击，菜单项被点击等等，比如：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;下面是一个普通的按钮:)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(&amp;#39;我被点击了！&amp;#39;)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;点击按钮，和HTML中一样，弹出窗口显示：&lt;/p&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/xul6_1.png" alt="" height="311" width="374"&gt;&lt;/p&gt; &lt;p&gt;通过javascript的事件冒泡，可以在上层元素中捕获下层元素的事件信息，并进行识别处理：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;alert(event.target.tagName + &amp;#39; 被点击&amp;#39;);&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;checkbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;我是单选框&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;当事件被激活，event.target中包含了被激活对象的信息，其中tagName就是对象标签的名称，可以通过它识别事件实在哪个标签（也就是控件）上被激活的。效果如下：&lt;/p&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/xul6_2.png" alt="" height="318" width="393"&gt;&lt;/p&gt; &lt;p&gt;在XUL中，负责事件处理的javascript代码，可以像上面那样内联在xml标签中，也可以像HTML那样，从外部的js文件中引用：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="javascript"&gt;  &lt;div style="border-bottom: 1px solid rgb(204, 204, 204); padding: 2px; margin-bottom: 5px; color: rgb(102, 102, 102); font-weight: bold; font-family: &amp;#39;Courier New&amp;#39;,Courier,monospace;"&gt;button.js 文件：&lt;/div&gt; &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; show_ok&lt;span style="color: rgb(102, 204, 102);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;alert&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt; &amp;quot;我被点击了！&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;在XUL文件中，用&amp;lt;script&amp;gt;标签引用外部的js文件：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;script&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;button.js&amp;quot;&lt;/span&gt; &lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;下面是一个普通的按钮:)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;oncommand&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;span style="background-color: rgb(255, 255, 153);"&gt; show_ok()&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&amp;nbsp;效果和第一张图片一样。&lt;/p&gt; &lt;p&gt;你也可以通过熟悉的getElementById函数取得想要的对象，然后再用addEventListener函数动态的为元素添加事件处理函数，这样的好处就是完全分开了XUL和javascript，负责不同功能的两种语言不再纠缠在一起：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="javascript" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;div style="border-bottom: 1px solid rgb(204, 204, 204); padding: 2px; margin-bottom: 5px; color: rgb(102, 102, 102); font-weight: bold; font-family: &amp;#39;Courier New&amp;#39;,Courier,monospace;"&gt;my_button.js 文件：&lt;/div&gt; &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; show_ok&lt;span style="color: rgb(102, 204, 102);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;alert&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt; &amp;quot;我被点击了！&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; button = document.&lt;span style="color: rgb(0, 102, 0);"&gt; getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;&amp;quot;my_button&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;button.&lt;span style="color: rgb(0, 102, 0);"&gt;addEventListener&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt; &amp;#39;command&amp;#39;&lt;/span&gt;, show_ok, &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;/* &lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt; * 参数1为事件名称，oncommand即为command&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt; * 参数2为事件处理函数&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt; * 参数3为true 表示不捕捉冒泡消息&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;*/&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;下面是一个普通的按钮:)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102); background-color: rgb(255, 255, 0);"&gt;id&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);"&gt; &amp;quot;my_button&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;script&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;my_button.js&amp;quot;&lt;/span&gt; &lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&amp;nbsp;效果和上面一样。&lt;/p&gt; &lt;p&gt;值得注意的是，首先得在XUL中指定对象的id属性，&amp;lt;script&amp;gt;标签也得在想引用的元素后面出现才可以，因为如果在前面，那时候下面的元素还没有被创建，getElementById也找不到它。&lt;/p&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769 &lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-6257445512795545366?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/6257445512795545366/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=6257445512795545366' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6257445512795545366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6257445512795545366'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox-xul.html' title='firefox扩展开发(五) ： 驱动XUL界面'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-6688419135799760557</id><published>2007-07-30T09:30:00.001-07:00</published><updated>2007-07-30T09:30:22.196-07:00</updated><title type='text'>firefox扩展开发(四) ： 更多的窗口控件</title><content type='html'>&lt;h1&gt;firefox扩展开发(四) ： 更多的窗口控件&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年05月21日 10:24PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E5%BC%80%E5%8F%91" class="tag"&gt;开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95" class="tag"&gt;扩展&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/129.html" class="down" title="下一篇"&gt;firefox扩展开发(五) ： 驱动XUL界面&lt;/a&gt;&lt;/small&gt;                &lt;h2&gt;标签盒子&lt;/h2&gt; &lt;p&gt;标签盒子是啥？大家都见过，就是分页标签：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-13.png"&gt;&lt;/p&gt; &lt;p&gt;对应的代码：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tabbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tabs&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tab&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;第一个标签标题&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tab&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;第二个标签标题&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/tabs&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tabpanels&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tabpanel&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;firsttab&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;第一个标签的内容&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/tabpanel&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;tabpanel&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;secondtab&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;第二个标签的内容&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/tabpanel&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/tabpanels&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/tabbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;每个标签盒子中的内容被包含在&amp;lt;tabbox&amp;gt;中，&amp;lt;tabs&amp;gt;下的&amp;lt;tab&amp;gt;包含标签标题，&amp;lt; tabpanels&amp;gt;下的&amp;lt;tabpanel&amp;gt;包含每个标签的内容，按顺序和标签标题&amp;lt;tab&amp;gt;对应。&lt;/p&gt; &lt;h2&gt;iframe&lt;/h2&gt; &lt;p&gt;&amp;lt;iframe&amp;gt;这个标签在HTML里再熟悉不过了，在XUL中，作用和用法HTML一样，可以用来在窗口中嵌套一个网页，只要设置&amp;lt;iframe&amp;gt;的src属性即可：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;以下为GemBlog首页…………&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;iframe&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;content&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://blog.linuxgem.org"&gt;http://blog.linuxgem.org &lt;/a&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;flex&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;效果：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-14.png"&gt;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt; http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-6688419135799760557?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/6688419135799760557/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=6688419135799760557' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6688419135799760557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6688419135799760557'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_893.html' title='firefox扩展开发(四) ： 更多的窗口控件'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-7925235528110583563</id><published>2007-07-30T09:29:00.001-07:00</published><updated>2007-07-30T09:29:31.238-07:00</updated><title type='text'>firefox扩展开发(三) ： 排列窗口控件</title><content type='html'>&lt;h1&gt;firefox扩展开发(三) ： 排列窗口控件&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年05月20日 09:57PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E5%BC%80%E5%8F%91" class="tag"&gt;开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95" class="tag"&gt;扩展&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/129.html" class="down" title="下一篇"&gt;firefox扩展开发(五) ： 驱动XUL界面&lt;/a&gt;&lt;/small&gt;                &lt;p&gt;上一篇我们讲到了用XUL创建基本的窗口控件（按钮、输入框、单选复选框……），现在我们来讲一下如何排列他们。&lt;/p&gt; &lt;h2&gt;盒子：&amp;lt;hbox&amp;gt;与&amp;lt;vbox&amp;gt;&lt;/h2&gt; &lt;p&gt;XUL中主要的布局元素成为&amp;quot;盒子&amp;quot;，分为两种，水平盒子和垂直盒子，也就是&amp;lt;hbox&amp;gt;和&amp;lt;vbox&amp;gt;，说白了就是把包含在盒子内的空间水平或者垂直排列，如果你熟悉GTK+编程的话，一定对这两种布局方式非常的熟悉。&lt;/p&gt; &lt;p&gt;上一篇的控件，只能按照顺序垂直分布在窗口中，因为这是窗口默认的排列控件的方式，要想改变，就要把控件放在盒子中：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;用户名:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;密码:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;pass&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;ok&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;登录&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;cancel&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;取消&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;和上一篇一样，把上述文件保存为test.xul，并用firefox打开。&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-7.png"&gt;&lt;/p&gt; &lt;p&gt;运行得不错，不过，"密码:"旁边的输入框似乎靠的太近了些，我们可以把两个文字标签、两个输入框，分别放在两个个&amp;lt;vbox&amp;gt;中，这样就解决了对齐问题：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;用户名:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;密码:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;pass&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;ok&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;登录&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;cancel&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;取消&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;显示效果：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-8.png" height="259" width="261"&gt;&lt;/p&gt; &lt;h2&gt;盒子内的布局&lt;/h2&gt; &lt;p&gt;当我们把上面的窗口拖大，窗口控件还是停留在窗口的左边，留下右边一大片空白，这似乎不是我们想要的效果：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-9.png"&gt;&lt;/p&gt; &lt;p&gt;我们可以在&amp;lt;vbox&amp;gt;或&amp;lt;hbox&amp;gt;中的pack属性来控制，pack有3种值：&lt;/p&gt; &lt;ol&gt;&lt;li&gt;start：对vbox来说，是盒内全部靠上，对hbox，就是盒内全部靠左。&lt;/li&gt;&lt;li&gt;center：盒内居中。&lt;/li&gt;&lt;li&gt;end：vbox是靠下，hbox是靠右。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;这里，我们还要介绍一个flex属性，默认情况下，盒子的大小是不变的，等于盒内元素的总大小，但是当flex属性为&amp;quot;1&amp;quot;时，盒子的大小是随着窗口的增大而增大，这样才能通过设置pack属性控制盒内的布局：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; pack&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;center&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;flex&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;用户名:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;密码:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;pass&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; pack&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;center&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;flex&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;ok&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;登录&amp;quot;&lt;/span&gt;  &lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;cancel&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;取消&amp;quot;&lt;/span&gt; &lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/vbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;这样就实现了居中：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-10.png"&gt;&lt;/p&gt; &lt;h2&gt;分组窗口控件&lt;/h2&gt; &lt;p&gt;有的时候，窗口中一部分空间是相互关联的，为了表示出这种关联关系，要用到&amp;lt;groupbox&amp;gt;：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;groupbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;caption&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;9月20日是……？&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;植树节&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;爱牙日&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;中秋节&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;元宵节&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/groupbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;显示效果：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-11.png" height="252" width="211"&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;caption&amp;gt;的值，就是分组标签标题的值，&amp;lt;caption&amp;gt;甚至可以包含其他的控件：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;groupbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;caption&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;checkbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;Enable Backups&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/caption&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; control&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;dir&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;Directory:&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;dir&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;checkbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;Compress archived files&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/groupbox&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;显示效果：&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-12.png"&gt;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt; http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-7925235528110583563?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/7925235528110583563/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=7925235528110583563' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/7925235528110583563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/7925235528110583563'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox_30.html' title='firefox扩展开发(三) ： 排列窗口控件'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-2233223275246307116</id><published>2007-07-30T09:28:00.001-07:00</published><updated>2007-07-30T09:28:17.020-07:00</updated><title type='text'>firefox扩展开发(二)：用XUL创建窗口控件</title><content type='html'>&lt;h1&gt;firefox扩展开发(二)：用XUL创建窗口控件&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年05月20日 02:30PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95" class="tag"&gt;扩展&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E5%BC%80%E5%8F%91" class="tag"&gt;开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/XUL" class="tag"&gt;XUL&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/129.html" class="down" title="下一篇"&gt;firefox扩展开发(五) ： 驱动XUL界面&lt;/a&gt;&lt;/small&gt;                &lt;p&gt;在Firefox 中，所有的界面都是基于XUL文件描述的，XUL本身是一个XML文件。就连Firefox本身，也是基于XUL的，不信的话，可以在firefox的地 址栏中敲入： chrome://browser/content/browser.xul ，看看会出现什么情况吧&lt;img alt="" src="http://blog.linuxgem.org/javascripts/fckeditor/editor/images/smiley/msn/teeth_smile.gif"&gt;。&lt;/p&gt; &lt;h2&gt;1.创建一个简单的窗口&lt;/h2&gt; &lt;p&gt;多说无益，让我们看一个简单的XUL文件示例：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;把上述的代码保存为test.xul，然后在firefox的"文件" --&amp;gt; "打开文件" 中打开这个文件，就可以看到（下图）。&lt;/p&gt; &lt;p&gt;哎，怎么啥都没有？ 因为我们还没有往窗口中加入任何东西，所以除了标题栏之外，是一片空白。实际上，上面的XUL文件，是每个窗口的基本框架。&lt;/p&gt; &lt;p&gt;第1行是XML文件的基本表示，第2行引用渲染窗口控件的样式表文件，这里我们先跳过对这行的解释，只要知道"chrome://global/skin/" 引用的是firefox全局默认的样式表即可。&lt;/p&gt; &lt;p&gt;第3行的&amp;lt;window&amp;gt;元素，就是窗口的根元素，你可以把它想象成HTML中的&amp;lt;html&amp;gt;元素。属性id的值可以随便 取，和HTML中的id属性相同，必须要保证全局唯一，因为之后我们要通过id来引用每个窗口。title属性就是窗口的标题，xmlns是名称空间，说 明之下的内容是XUL。&lt;/p&gt; &lt;p&gt;窗口中所有的内容，都要放在&amp;lt;window&amp;gt;和&amp;lt;/window&amp;gt;之间，就像HTML中所有的元素必须放在&amp;lt;html&amp;gt;和&amp;lt;/html&amp;gt;之间一样。&lt;/p&gt; &lt;p&gt;&lt;img style="border: 1px solid rgb(255, 255, 255);" alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/window.png"&gt;&lt;/p&gt; &lt;h2&gt;2.让我们往窗口里添点东西吧&lt;/h2&gt; &lt;p&gt;所有一般程序具有的窗口控件（按钮、单选复选框、文本输入框、下拉菜单……），在firefox的窗口中都可以实现，只不过，不同的窗口控件在XUL中变成了不同的XML标签，控件的属性（大小、文本、排列方式……）变成了标签的属性值而已。&lt;/p&gt; &lt;h3&gt;2.1按钮&lt;/h3&gt; &lt;p&gt;我们先来添加个按钮，打开test.xul，添加下面的代码：&lt;/p&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;p&gt;按钮在XUL中就是&amp;lt;button&amp;gt;这个标签，label属性为按钮上显示的文字。&lt;/p&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-1.png" alt="" height="175" width="315"&gt;&lt;/p&gt; &lt;h3&gt;2.2文字&lt;/h3&gt; &lt;p&gt;在窗口上显示的文字，用&amp;lt;label&amp;gt;标签来显示：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;下面是一个普通的按钮:)&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;button&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;普通的按钮&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-2.png" height="175" width="315"&gt;&lt;/p&gt; &lt;h3&gt;2.3文本输入框&lt;/h3&gt; &lt;p&gt;文本输入框，为&amp;lt;textbox&amp;gt;标签。让我们清除刚才添加的代码，下面的代码显示了&amp;lt;textbox&amp;gt;的几种用法。&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;用户名&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;密码&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; maxlength&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;个人简介&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; multiline&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;在这里填入你的个人简介。&amp;quot; &lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;第11行，密码输入框要设置type属性为&amp;quot;password&amp;quot;；第14行，如果需要多行的输入框，需要指定multiline为&amp;quot;true&amp;quot;。&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-3.png"&gt;&lt;/p&gt; &lt;h3&gt;2.4单选和复选框&lt;/h3&gt; &lt;p&gt;单选框为&amp;lt;radio&amp;gt;，复选为&amp;lt;checkbox&amp;gt;。&lt;/p&gt; &lt;p&gt;单选框的分组，只要把单选框标签包含在&amp;lt;radiogroup&amp;gt;中即可。看代码:&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;用户名&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;密码&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;password&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; maxlength&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;10&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;你喜欢的颜色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;radiogroup&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;radio&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;blue&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;蓝色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;radio&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;selected&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;黄色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;radio&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;red&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;红色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/radiogroup&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;checkbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;保存我的信息&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;label&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;个人简介&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textbox&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; multiline&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;在这里填入你的个人简介。&amp;quot; &lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-4.png" alt=""&gt;&lt;/p&gt; &lt;h3&gt;2.5下拉选项&lt;/h3&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menulist&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menupopup&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menuitem&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;红色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menuitem&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;蓝色&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;menuitem&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; label&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;黄色&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;selected&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/menupopup&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/menulist&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;每个选项包含在&amp;lt;menuitem&amp;gt;中，&amp;lt;menuitem&amp;gt;再被包含在&amp;lt;menupopup&amp;gt;和&amp;lt;menulist&amp;gt;中。&lt;/p&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-5.png" alt="" height="234" width="193"&gt;&lt;/p&gt; &lt;h3&gt;2.6进度条&lt;/h3&gt; &lt;p&gt;用&amp;lt;progressmeter&amp;gt;表示。进度条分为两类，一种是有明确完成进度的，一种是没有完成进度的，通过设置mode=&amp;quot;determined&amp;quot;和&lt;br&gt; mode=&amp;quot;undetermined&amp;quot;来实现。&lt;/p&gt; &lt;p&gt;看一下效果就明白了：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="xml"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml-stylesheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;chrome://global/skin/&amp;quot;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt; ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;window&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;test-window&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;title&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;测试用的窗口&amp;quot;&lt;/span&gt;&lt;/div&gt;      &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 0, 102);"&gt;xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt; http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;progressmeter&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;progress1&amp;quot;&lt;/span&gt; &lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;mode&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;determined&amp;quot; &lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;60%&amp;quot;&lt;/span&gt; &lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;progressmeter&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;id&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;progress2&amp;quot;&lt;/span&gt; &lt;/div&gt;     &lt;/li&gt;&lt;li style="background-color: rgb(255, 255, 153);"&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;mode&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;undetermined&amp;quot; &lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/window&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;img src="http://blog.linuxgem.org/user_files/galeki/Image/Screenshot-%E6%B5%8B%E8%AF%95%E7%94%A8%E7%9A%84%E7%AA%97%E5%8F%A3%20-%20Mozilla%20Firefox-6.png" alt=""&gt;&lt;/p&gt; &lt;hr size="2" width="100%"&gt; &lt;p&gt;至此，我们介绍了用XUL创建出一个窗口所具备的基本控件的方法，但是这些空间只能按照次序从上到下的显示，而且，每个元素将占满窗口的整个宽度，接下来，我们要看一下怎么布局窗口中众多的控件。&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769 &lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-2233223275246307116?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/2233223275246307116/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=2233223275246307116' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/2233223275246307116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/2233223275246307116'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefoxxul.html' title='firefox扩展开发(二)：用XUL创建窗口控件'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-3173981400334239810</id><published>2007-07-30T09:26:00.001-07:00</published><updated>2007-07-30T09:26:19.157-07:00</updated><title type='text'>firefox扩展开发(一) ： 扩展的基本结构</title><content type='html'>&lt;h1&gt;firefox扩展开发(一) ： 扩展的基本结构&lt;/h1&gt;   &lt;div id="article_header"&gt;     &lt;strong&gt; galeki&lt;/strong&gt;      posted @ 2007年05月18日 11:09PM      in &lt;a href="http://blog.linuxgem.org/galeki/list/category/81"&gt;Firefox扩展开发&lt;/a&gt;     	with tags  		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/extension" class="tag"&gt;extension&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E5%BC%80%E5%8F%91" class="tag"&gt;开发&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/%E6%89%A9%E5%B1%95" class="tag"&gt;扩展&lt;/a&gt; 		    &lt;a href="http://blog.linuxgem.org/galeki/list/tag/firefox" class="tag"&gt;firefox&lt;/a&gt; 	             &lt;/div&gt;         &lt;small&gt;&lt;a href="http://blog.linuxgem.org/galeki/show/129.html" class="down" title="下一篇"&gt;firefox扩展开发(五) ： 驱动XUL界面&lt;/a&gt;&lt;/small&gt;                &lt;p&gt;用过firefox的人肯定要安装firefox的扩展，这样才能发挥火狐的全部实力。一般扩展是一个后缀为.xpi的文件，其实这个文件就是zip格式的压缩包，压缩了一个扩展所需要的所有目录和文件，基本的目录结构如下：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="bash" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;font color="#000000"&gt;extension.xpi:&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /install.rdf&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /components/*&amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /components/cmdline.js&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /defaults/&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /defaults/preferences/*.js&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /plugins/*&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /chrome.manifest&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /chrome/icons/default/*&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /chrome/&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /chrome/content/&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;看似很复杂，让我们从最重要的文件开始介绍起：&lt;/p&gt; &lt;p&gt;&lt;span class="Title"&gt;1. install.rdf&lt;/span&gt;&lt;/p&gt; &lt;p&gt;从名字可以看出，这个文件描述了扩展安装所需要的信息，包括了扩展的标识、版本、适用的应用程序、作者等等等等。本身是一个rdf文件。&lt;/p&gt; &lt;p&gt;基本的install.rdf示例：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="xml" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;  &lt;ol&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; version&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;RDF&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; xmlns&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: rgb(0, 0, 102);"&gt;xmlns:em&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;&lt;a href="http://www.mozilla.org/2004/em-rdf#"&gt; http://www.mozilla.org/2004/em-rdf#&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 标识和版本 &lt;/span&gt;--&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;Description&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt; about&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;quot;urn:mozilla:install-manifest&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:id&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="mailto:galeki@linuxge.org"&gt;galeki@linuxge.org&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:id&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:version&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;1.0&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:version&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:type&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;2&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:type&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt; &amp;lt;!-- 针对的应用程序 &lt;/span&gt;--&amp;gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;&amp;nbsp;&lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:targetApplication&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;Description&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:id&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:id&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:minVersion&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;1.5&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:minVersion&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:maxVersion&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;2.0.0.*&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:maxVersion&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/Description&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:targetApplication&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;&amp;lt;!-- 名称、介绍、作者和网站地址 --&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:name&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hello&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:name&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:description&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;扩展测试&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:description&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:creator&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;galeki&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:creator&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;em:homepageURL&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://blog.linuxgem.org/galeki"&gt;http://blog.linuxgem.org/galeki&lt;/a&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/em:homepageURL&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&amp;nbsp; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/Description&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;     &lt;/li&gt;&lt;li style=""&gt;     &lt;div style="border-left: 1px dotted rgb(170, 170, 170); padding-left: 12px; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/RDF&lt;span style="font-weight: bold; color: black;"&gt; &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;8～10行是标识信息，第8行的&amp;lt;em:id&amp;gt;段是此软件包唯一的标识，可以是作者的email，目的是唯一标识此软件包。第9行是目 前的版本。第10行的&amp;lt;em:type&amp;gt;，值为2代表&amp;quot;我是扩展&amp;quot;，4代表&amp;quot;我是主题&amp;quot;，这里是扩展，所以值为2。&lt;/p&gt; &lt;p&gt;14～20行的&amp;lt;em:targetApplication&amp;gt;段描述了软件包针对的应用程序，16行那段古怪的&amp;lt;em: id&amp;gt;表明此扩展是针对firefox的，而不是thunderbird、sunbird，所以，只要是针对firefox的扩展，此id的值都不 变。17～18行描述了此扩展适用的firefox版本。&lt;/p&gt; &lt;p&gt;23～26行描述了扩展的基本信息，从标签的名称上就可以看出意思，扩展管理器中显示的扩展信息，就是来源于这里。&lt;/p&gt; &lt;p&gt;&lt;span class="Title"&gt;2. chrome目录&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;chrome是扩展最重要的一个目录，所有描述扩展的文件，称为chrome。&lt;/p&gt; &lt;p&gt;chrome一般包括3类文件，content、locale、skin：&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;content&lt;/strong&gt;：描述扩展界面、外观的定义文件，比如按钮布局，对话框，通过XUL文件和js文件来设定，后面我们可以看到XUL的介绍。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;locale&lt;/strong&gt;： 描述多语言信息的文件，一般是xml的dtd文件。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;skin&lt;/strong&gt;： 定义界面样式的css文件和所需要的图片文件。&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;一个典型（并不绝对）的chrome目录下包含这么几个子目录：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="bash" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;font color="#000000"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /chrome&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content/&lt;br&gt; &lt;/font&gt;&lt;font color="#000000"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; locale/&lt;/font&gt;&lt;font color="#000000"&gt;&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; skin/&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;三个子文件夹存放了扩展对应的content、locale和skn类型的文件。&lt;/p&gt; &lt;p&gt;&lt;span class="Title"&gt;3.chrome.manifest文件&lt;/span&gt;&lt;/p&gt; &lt;p&gt;接下来，得让fierfox找到扩展的content、locale、skin文件在哪里，chrome.manifest就是这个作用。&lt;/p&gt; &lt;p&gt;这个文件让firefox知道扩展的content、locale、skin等文件在哪里，例如：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="c" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;font color="#000000"&gt;content&amp;nbsp; &amp;nbsp; &amp;nbsp;hello&amp;nbsp; &amp;nbsp; chrome/content/&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;简单来说，就是指明，hello这个扩展的content类型文件，在chrome目录的content子目录下。&lt;/p&gt; &lt;p&gt;locale的定义稍有区别：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div class="c" style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt; &lt;font color="#000000"&gt;locale&amp;nbsp; hello&amp;nbsp; zh-CN&amp;nbsp; &amp;nbsp;chrome/locale/zh-CN/&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;指明hello这个扩展的zh-CN，也就是中文的locale，在chrome/locale/zh-CN/目录下。&lt;/p&gt; &lt;p&gt;skin的定义和locale相似：&lt;/p&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="c"&gt; &lt;font color="#000000"&gt;skin&amp;nbsp; &amp;nbsp;hello&amp;nbsp; classic/&lt;span style="color: rgb(204, 102, 204);"&gt;1.0&lt;/span&gt;&amp;nbsp; &amp;nbsp;chrome/skin/classv1/&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;指明hello这个扩展，名叫classic/1.0的skin，在chrome/skin/classv1/目录下。&lt;/p&gt; &lt;p&gt;通过chrome.manifest文件的指定，firefox就可以找到对应的文件。在firefox中，引用web服务器上的文件是用的 "http://"前缀，引用硬盘上的文件是用的"file://&amp;quot;前缀，引用扩展中的文件有单独的引用前缀，就是"chrome://"，比如：&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt; &lt;div class="hl_result"&gt; &lt;div style="border: 1px dotted rgb(170, 170, 170); margin: 10px; padding: 2px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; font-family: Arial,Verdana,Helvetica,sans-serif; font-weight: bold; color: rgb(153, 153, 153); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" class="c"&gt; &lt;font&gt;chrome:&lt;span style="color: rgb(128, 128, 128); font-style: italic;"&gt;//hello/content/about.xul&lt;/span&gt;&lt;/font&gt;&lt;/div&gt; &lt;/div&gt; 引用了hello扩展content类型文件中的about.xul文件。这样一来，不管在硬盘上扩展的content、locale、skin是在什么 地方，只要chrome.manifest文件配置好，就可以让firefox通过"chrome://"引用到特定的文件了。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;FireFTP的例子：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;&lt;img alt="" src="http://blog.linuxgem.org/user_files/galeki/Image/fireftp.png" height="210" width="589"&gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#000000"&gt;由上图的地址栏可以看出，打开FireFTP这个扩展，实际上就是打开了fireftp的content类型文件中的fireftp.xul文件。&lt;/font&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769 &lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-3173981400334239810?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/3173981400334239810/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=3173981400334239810' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3173981400334239810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/3173981400334239810'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/firefox.html' title='firefox扩展开发(一) ： 扩展的基本结构'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-6791699582814828053</id><published>2007-07-11T03:22:00.001-07:00</published><updated>2007-07-11T07:57:18.048-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++'/><title type='text'>abBars代码解读之——Visual Studio的自动化接口</title><content type='html'>&lt;div class="con_all"&gt; &lt;p&gt;&lt;font size="3"&gt;Microsoft的Visual Studio开发工具为软件开发人员提供了强大的功能，通过集成开发环境(IDE)的构建平台提供的菜单和工具条，开发人员可以生成项目，编写代码，调试直到最终生成应用程序。除此之外，Visual Studio还提供了一套完整的自动化对象，通过操作这些自动化对象提供的方法，开发人员在不使用菜单和工具条的情况下也能够完成诸如打开文件、激活窗口或改变窗口大小等操作。Visual Studio提供了两种方法让用户控制集成开发环境和它的自动化组件对象，一种是使用宏（Macros），另一种是使用内置插件（Add-ins）。本文主要是介绍内置插件（Add-ins）方面的内容。 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 每一个自动化对象都代表了集成开发环境的一个构件或相关的一组构件。例如Document代表一个打开的文档，而Documents对象则代表所有打开的文档，同样，一个Window对象代表一个打开的窗口，Windows对象代表所有打开的窗口。使用内置插件可以在脱离IDE的情况下打开一个项目。修改项目中的文件甚至重新Build这个项目。使用内置插件还可以向IDE添加实用的命令，在工具条上创建按钮，扩展IDE的功能。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDSAddIn接口是Visual Studio定义的插件接口，Visual Studio只是定义了这个接口，一个内置插件就是一个IDSAddIn接口的实现，也就是说，一个内置插件就是一个COM对象，它至少应该实现一个 IDSAddIn接口。使用VC的Add-ins向导生成的内置插件代码核心就是一个CDSAddIn类： &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;fieldset style="WIDTH: 640px; HEIGHT: 24px; BACKGROUND-COLOR: rgb(196,224,224)"&gt;class CDSAddIn : public IDSAddIn,&lt;br&gt;&amp;nbsp;&amp;nbsp;public CComObjectRoot,public CComCoClass&amp;lt;CDSAddIn, &amp;amp;CLSID_DSAddIn&amp;lt;&lt;br&gt;&lt;/fieldset&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;IDSAddIn接口其实只有两个方法，分别是：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;IDSAddIn::OnConnection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 插件被装载&lt;br&gt;IDSAddIn::OnDisconnection&amp;nbsp;&amp;nbsp;&amp;nbsp; 插件被卸载&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;插件工作的过程是这样的，当IDE启动一个插件时，就按照IDSAddIn接口的约定调用插件的coclass实现的OnConnection，并传递一个Application参数给插件，插件的OnConnection就完成插件的初始化。并通过这个 Application对象查询IDE支持的其他自动化对象，通过这些对象完成特定的任务。一个内置插件典型的任务就是向系统的Commands对象注册一个命令并在工具条上创建一个按钮。当系统要卸载一个内置插件时就会调用相应的OnDisconnection，插件应该利用这个机会释放已经申请的系统资源，从系统的Commands对象中注销已经注册的命令，同时删除添加在工具条上的按钮。从这个过程可以看出，虽然插件的加载和释放都是被动进行的，但是通过实现自定义的OnConnection和OnDisconnection接口函数，插件可以完成自己定制的初始化和销毁任务，这很像是COM事件的回调过程，从接口函数的名字也可以看出一些倪端，接口函数的名字都是以"On"开头，这通常是COM体系中事件接口的声明方式。图（1）表示了内置插件、IDSAddIn接口和实现类之间的关系： &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;img height="239" alt="" src="http://blog.csdn.net/images/blog_csdn_net/orbit/uml_addin.gif" width="577"&gt;&lt;br&gt;图1. 插件组件、IDSAddIn接口和实现类之间的关系&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Visual Studio的IDE通过IDSAddIn::OnConnection接口函数将一个很重要的参数传递给插件，这个参数就是一个Application 对象。Application对象对应的是整个Visual Studio IDE 的实例，简单点讲，可以理解为一个Application就是一个打开的VC集成开发环境。Application对象是整个Visual Studio内置组件的核心组件，通过Application对象可以查询整个Visual Studio IDE的所有内置对象，并通过这些内置对象控制Visual Studio。以下代码演示了在不打开VC的IDE的情况下打开一个VC的工作区并执行Rebuild All命令编译这个工作区的所有项目： &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;fieldset style="WIDTH: 640px; HEIGHT: 24px; BACKGROUND-COLOR: rgb(196,224,224)"&gt;//伪代码，不可直接编译 &lt;br&gt;#import &amp;quot;....\devshl.dll&amp;quot;&lt;br&gt;&lt;br&gt;IApplicationPtr pApp;&lt;br&gt;pApp.CreateObject(_T(&amp;quot;MSDEV.Application&amp;quot;));&lt;br&gt; if(pApp != NULL)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;pApp-&amp;lt;RebuildAll();&lt;br&gt;}&lt;br&gt;&lt;/fieldset&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 内置插件通过IDSAddIn::OnConnection接口函数接口函数获得一个当前集成开发环境的Application对象，插件随后的所有工作都是围绕着这个Application对象进行的，CDSAddIn负责保存这个Application对象。Visual Studio的内置COM对象接口是一个比较复杂的接口模型，图（2）就是这些内置接口的关系图：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;img height="709" alt="" src="http://blog.csdn.net/images/blog_csdn_net/orbit/app_obj.gif" width="984"&gt;图2. Visual Studio的内置COM对象接口关系图&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下面就以TabBars的自动添加格式化函数说明功能的部分代码为例，演示如何通过Application对象实现在当前文档中插入文字内容：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;fieldset style="WIDTH: 640px; HEIGHT: 24px; BACKGROUND-COLOR: rgb(196,224,224)"&gt;CComPtr&amp;lt;IDispatch&amp;lt; pDispDoc; &lt;br&gt;CComQIPtr&amp;lt;ITextDocument, &amp;amp;IID_ITextDocument&amp;lt; pDoc; &lt;br&gt;//m_pApplication是CDSAddIn保存的一个Application对象  &lt;br&gt;m_pApplication-&amp;lt;get_ActiveDocument(&amp;amp;pDispDoc); &lt;br&gt;pDoc = pDispDoc; //隐式的接口查询 &lt;br&gt;pDispDoc = NULL; //Release it &lt;br&gt;&lt;br&gt;if(pDoc) &lt;br&gt;{ &lt;br&gt;&amp;nbsp;&amp;nbsp;CComPtr&amp;lt;IDispatch&amp;lt; pDispSel; &lt;br&gt;&amp;nbsp;&amp;nbsp;CComQIPtr&amp;lt;ITextSelection, &amp;amp;IID_ITextSelection&amp;lt; pSel;  &lt;br&gt;&amp;nbsp;&amp;nbsp;CComBSTR bstr; &lt;br&gt;&amp;nbsp;&amp;nbsp;CString strText; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;pDoc-&amp;lt;get_Selection(&amp;amp;pDispSel); &lt;br&gt;&amp;nbsp;&amp;nbsp;pSel = pDispSel; // 查询ITextSelection对象 &lt;br&gt;&amp;nbsp;&amp;nbsp;pDispSel = NULL; &lt;br&gt;&amp;nbsp;&amp;nbsp;hr = pSel-&amp;lt;get_Text(&amp;amp;bstr); //得到当前选择的文字 &lt;br&gt;&amp;nbsp;&amp;nbsp;if(SUCCEEDED(hr))  &lt;br&gt;&amp;nbsp;&amp;nbsp;{ &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strText = bstr; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strText.Replace(_T(&amp;quot;\t&amp;quot;),_T(&amp;quot; &amp;quot;)); //将\t替换成空格 &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bstr = strText; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pSel-&amp;lt;put_Text(bstr);//写入document &lt;br&gt;&amp;nbsp;&amp;nbsp;} &lt;br&gt;} &lt;br&gt;&lt;/fieldset&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 了解了Visual Studio的自动化接口以及如何使用这些接口之后，就可以大致了解TabBars是如何工作的，随后的代码解读将重点介绍每个TabBars的功能是如何实现的，并结合这些功能讲解Visual Studio内置COM对象接口的用法。&lt;/font&gt;&lt;/p&gt;&lt;/div&gt; &lt;div class="story_con_point"&gt; &lt;p&gt;您认为本文应该得&amp;nbsp;&lt;select id="oPointRange" name="oPointValue"&gt;&lt;option value="1"&gt;1&lt;/option&gt;&lt;option value="2"&gt;2&lt;/option&gt;&lt;option value="3" selected&gt;3&lt;/option&gt;&lt;option value="4"&gt;4&lt;/option&gt;&lt;option value="5"&gt;5&lt;/option&gt;&lt;/select&gt;&lt;input id="btnRankPost" onclick="return UpdateImageDescription(1)" type="button" value="打分" name="btnRankPost"&gt; &amp;nbsp;&lt;span id="oImageDescription" name="oImageDescription"&gt;&amp;nbsp;&lt;img src="http://dev.csdn.net/images/tech_star3.gif"&gt;&amp;nbsp;&lt;img src="http://dev.csdn.net/images/tech_star3.gif"&gt;&amp;nbsp;&lt;img src="http://dev.csdn.net/images/tech_star3.gif"&gt;&amp;nbsp;&lt;img src="http://dev.csdn.net/images/tech_star3.gif"&gt; &amp;nbsp;&lt;img src="http://dev.csdn.net/images/tech_star3.gif"&gt;&lt;/span&gt;&lt;span id="oHelperUI"&gt;&lt;a onclick="javascript:return PrintPage();" href="http://dev.csdn.net/author/orbit/82d92805ed714d84b341446d5e7ca2ad.html#"&gt;打印&lt;/a&gt;|&lt;a title="功能强大的网络收藏夹，一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐" href="javascript:d=document;t=d.selection?(d.selection.type!=&amp;#39;None&amp;#39;?d.selection.createRange().text:&amp;#39;&amp;#39;):(d.getSelection?d.getSelection():&amp;#39;&amp;#39;);void(saveit=window.open(&amp;#39;http://wz.csdn.net/storeit.aspx?t=&amp;#39;+escape(d.title)+&amp;#39;&amp;amp;u=&amp;#39;+escape(d.location.href)+&amp;#39;&amp;amp;c=&amp;#39;+escape(t),&amp;#39;saveit&amp;#39;,&amp;#39;scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes&amp;#39;));saveit.focus();"&gt; 收藏&lt;/a&gt;|&lt;a href="http://dev.csdn.net/author/orbit/82d92805ed714d84b341446d5e7ca2ad.html#Comment"&gt;讨论&lt;/a&gt;|&lt;a href="mailto:techcenter@csdn.net"&gt;投诉&lt;/a&gt;&lt;/span&gt;&lt;span id="oArticleID" style="DISPLAY: none"&gt;82d92805-ed71-4d84-b341-446d5e7ca2ad &lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div class="author_inter"&gt;&lt;img alt="暂无图片" src="http://dev.csdn.net/user_photos/orbit.jpg" target="_blank"&gt;  &lt;p&gt;网名oRbIt，1996年开始编程，1999年创建星轨工作室(Orbit Studio)，创作了Source Insight外挂插件"TabSiPlus"、"Winmsg消息精灵"、"TabBar Addin for VC"和"aClock 桌面时钟"等软件。目前在中兴通讯股份有限公司上海研发中心工作，从事以太网光接入产品（EPON&amp;amp;GPON）的开发与研究工作。&lt;/p&gt;&lt;/div&gt; &lt;div class="author_art"&gt; &lt;div class="author_art_l"&gt; &lt;h5&gt;作者其他文章： &lt;span&gt;&lt;a href="http://dev.csdn.net/author/orbit/index.html" target="_blank"&gt;更多&lt;/a&gt; &lt;/span&gt;&lt;/h5&gt; &lt;div class="author_art_l_list"&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://dev.csdn.net/author/orbit/6c154741364e4d31ba7b87f87b34da64.html" target="_self"&gt;WTL for MFC Programmers, Part VI - Hosting ActiveX Controls&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://dev.csdn.net/author/orbit/2c36f12cd56d43b28bd3a49494b37606.html" target="_self"&gt;WTL for MFC Programmers, Part VIII - Property Sheets and Wizards&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; 一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt;http://li-cai.blogspot.com/&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-6791699582814828053?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/6791699582814828053/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=6791699582814828053' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6791699582814828053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/6791699582814828053'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/abbarsvisual-studio.html' title='abBars代码解读之——Visual Studio的自动化接口'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-5585371658470332577</id><published>2007-07-11T03:20:00.001-07:00</published><updated>2007-07-11T07:57:33.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++'/><title type='text'>操作QQWary.dat数据文件的类</title><content type='html'>&lt;br clear="all"&gt; &lt;p&gt;&lt;font size="3"&gt;操作QQWary.dat数据文件的类&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;摘要：QQwry是目前使用很广泛的IP地址数据库，本文研究了QQwry数据文件的格式，编写了一个读取数据文件，查询IP地址信息的类，并附带完整的演示例子的VC代码。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;关键字：IP地址查询，QQwry&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2002年末的时候，我想给我的一个软件添加ip地址查询功能，当时很多QQ版本都支持显示ip地址信息，记得这种功能最早有一个名为"追捕"的软件就实现了，不过QQ使用的是一种新的ip地址数据库组织格式，相对于老的文本格式的数据文件，新的数据文件格式更加紧凑，查询效率更高。经过一番研究之后，我决定在我的程序中实现这个功能，于是我给cnss发了封邮件，希望得到QQwry.dat文件的格式，但是没有答复（汗~~~~）。没办法，只好来硬的（Don&amp;#39;t warry，我没有采用暴力威胁、寄邮包炸弹等恐怖方式），于是拿出IDAPro，咔咔咔， 几十秒钟之后ipsearch.dll的汇编代码就出现在我的眼前。直接找CreateFile的调用，果然只有一处针对QQway.dat的调用，剩下的就是分析代码了...此处省去若干汉字和英文字符以及空格、标点符号......&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 新的QQwry数据库使用32位的internet IP地址代替了点分形式的IP地址（字符串），文件的前半部分存放IP地址区间，所有的IP地址划分成从大到小的区间（地址段），所有的地址描述信息在文件的后半部分。查找的过程就是按照区间从大到小的区间确定过程，关于QQwry数据文件的格式我分析地并不彻底，也就是很多地方只知道那样使用却不知道为什么。分析反汇编出来的代码并不是容易的事（因为我很菜嘛），我当时只是根据汇编代码的流程用C++重写了查询代码。演示代码中IpSearch工程中的 GetDispString函数就是直接从汇编代码翻译出来的，可以看到很多变量名都是IDAPro分析出来的内存地址或寄存器名。代码看起来很丑陋，但是用起来还不错， 支持当前所有版本的QQwry.dat（废话，人家格式没变嘛）。不过后来发生的事情让我很吐血，因为2004年的时候我从网上看到了下面两篇Blog：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.csdn.net/taft"&gt;&lt;font size="3"&gt;http://blog.csdn.net/taft&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; 《QQwry格式》&lt;br&gt;&lt;/font&gt;&lt;a href="http://blog.csdn.net/cnss"&gt;&lt;font size="3"&gt;http://blog.csdn.net/cnss&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt;  《关于QQWry格式》&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;如果你想更多的了解QQwry文件的格式就可以看看这两篇Blog。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 后来研究生毕业了，我将软件的代码卖给了别人，整个软件模块设计的很不错，只是那个GetDispString函数让我觉得拿不出手，于是花了点时间将其改写了，并封装成一个适用于Windows平台的类，也就是Win32工程中的CIpInfo类，这个类的使用非常简单：&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;fieldset style="WIDTH: 460px; HEIGHT: 136px; BACKGROUND-COLOR: rgb(196,224,224)"&gt;CIpInfo info;&lt;br&gt;if(info.LoadInfoFile(_T(&amp;quot;..\\DataFile\\QQwry.dat&amp;quot;)))&lt;br&gt;{&lt;br&gt;TCHAR szBuf[128];&lt;br&gt;info.GetIpInfo(_T(&amp;quot;&lt;a href="http://202.114.6.45"&gt; 202.114.6.45&lt;/a&gt;&amp;quot;),szBuf,128);&lt;br&gt;::MessageBox(::GetFocus(),szBuf,_T(&amp;quot;IpInfo class&amp;quot;),MB_OK);&lt;br&gt;}&lt;br&gt;&lt;/fieldset&gt;&lt;font size="3"&gt; &lt;/font&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;希望这些代码对大家有用。&lt;/font&gt;&lt;/p&gt;&lt;font size="3"&gt;下载代码&lt;img alt="" src="http://blog.csdn.net/images/blog_csdn_net/orbit/qqwry.zip"&gt;&lt;/font&gt;&lt;a href="http://blog.csdn.net/images/blog_csdn_net/orbit/qqwry.zip"&gt;&lt;font size="3"&gt; http://blog.csdn.net/images/blog_csdn_net/orbit/qqwry.zip&lt;/font&gt;&lt;/a&gt;&lt;br&gt;-- &lt;br&gt;一步一步教你从互联网赚钱 &lt;a href="http://www.zqzn.com/index.asp?rid=key480769"&gt;http://www.zqzn.com/index.asp?rid=key480769&lt;/a&gt;&lt;br&gt;投资理财 &lt;a href="http://li-cai.blogspot.com/"&gt; http://li-cai.blogspot.com/&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4837204256156578315-5585371658470332577?l=learn-cpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learn-cpp.blogspot.com/feeds/5585371658470332577/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4837204256156578315&amp;postID=5585371658470332577' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5585371658470332577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4837204256156578315/posts/default/5585371658470332577'/><link rel='alternate' type='text/html' href='http://learn-cpp.blogspot.com/2007/07/qqwarydat.html' title='操作QQWary.dat数据文件的类'/><author><name>Leon Zhang</name><uri>http://www.blogger.com/profile/16693477691702536225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4837204256156578315.post-8179725177653347406</id><published>2007-07-11T03:19:00.001-07:00</published><updated>2007-07-11T07:57:56.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>在桌面上飘雪特效程序</title><content type='html'>&lt;div class="con_sample"&gt; &lt;p&gt;飘雪程序&lt;/p&gt;&lt;/div&gt; &lt;div class="con_all"&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;上个月圣诞节时！有个MM发给我一个程序我运行一看是在桌面飘雪的程序&lt;img alt="" src="http://dev.csdn.net/fckeditor/editor/images/smiley/msn/shades_smile.gif"&gt;好棒！&lt;br&gt;昨天下午期末考试刚刚考完！我提前买了火车票还在学校里呆一天所以今下午没事便到delphi盒子上去溜达了一下看到了有刘兄写的飘雪特效的程序代码我载下来研究！用C++和SDK改写了（刘兄也是用SDK写的）此程：我运行的效果图如下： &lt;br&gt;&lt;img alt="" src="http://blog.csdn.net/images/blog_csdn_net/woundedsoul/90810/o_Snow.jpg"&gt;&lt;br&gt;时间太短！唉！我是画虎不成反类。。。。。只好先放上来下学期来了再整吧！我回家了就没有电脑碰了！&lt;img alt="" src="http://dev.csdn.net/fckeditor/editor/images/smiley/msn/wink_smile.gif"&gt; 代码中的有注译！&lt;br&gt;#include&amp;lt;windows.h&amp;gt;&lt;br&gt;#include&amp;lt;time.h&amp;gt;&lt;br&gt;#include&amp;lt;stdlib.h&amp;gt;&lt;br&gt;#include&amp;lt;iostream.h&amp;gt;&lt;/p&gt; &lt;p&gt;const int SnowNumber=500; //雪点数量&lt;/p&gt; &lt;p&gt;struct SnowNode&lt;br&gt;{&lt;br&gt;&amp;nbsp;POINT postion;&amp;nbsp; //雪点位置&lt;br&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp; iColor;&amp;nbsp;//先前的颜色&lt;br&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp; iSpeed;&amp;nbsp;//下落速度&amp;nbsp;&lt;br&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp; iMove;&amp;nbsp;//下落距离&lt;br&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp; iStick;&amp;nbsp;//粘贴度&lt;br&gt;};&lt;/p&gt; &lt;p&gt;SnowNode SnowNodes[SnowNumber]; //雪点数组&lt;br&gt;int&amp;nbsp;&amp;nbsp; hTimer=0;&lt;br&gt;int&amp;nbsp;&amp;nbsp; CrWind=0;&lt;br&gt;int&amp;nbsp;&amp;nbsp; CrStep=0; //当前循环步数(用于限速)&lt;br&gt;int&amp;nbsp;&amp;nbsp; ScreenWidth=0;&amp;nbsp;&amp;nbsp;//屏幕宽度&lt;br&gt;int&amp;nbsp;&amp;nbsp; ScreenHeight=0;&amp;nbsp;&amp;nbsp;//屏幕高度&lt;/p&gt; &lt;p&gt;void GetScreenSize();&lt;br&gt;void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime);&lt;br&gt;void InitSnowNodes();&lt;br&gt;void MoveSnowNodes();&lt;/p&gt; &lt;p&gt;int WINAPI&amp;nbsp; WinMain(HINSTANCE hInstance,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HINSTANCE hPrevInstance,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPSTR&amp;nbsp; lpCmdLine,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp; nCmdShow&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;{&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;MSG msg; //标准windows消息&amp;nbsp;&lt;br&gt;&amp;nbsp;LARGE_INTEGER Frequency; //高性能定时器频率&lt;br&gt;&amp;nbsp;LARGE_INTEGER StartCt,EndCt;//高性能定时器计数&lt;br&gt;float&amp;nbsp;ElapsedTime;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //时间间隔&lt;br&gt;&amp;nbsp;srand((unsigned)time(NULL));&lt;br&gt;&amp;nbsp;GetScreenSize();&lt;br&gt;&amp;nbsp;InitSnowNodes(); &lt;br&gt;&amp;nbsp;QueryPerformanceFrequency(&amp;amp;Frequency);&lt;br&gt;&amp;nbsp;hTimer=SetTimer(0,0,rand()%5*500,(TIMERPROC)TimerProc);&lt;br&gt;&amp;nbsp;if(hTimer==0)&lt;br&gt;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;MessageBox(0,TEXT(&amp;quot;创建定时器失败&amp;quot;),TEXT(&amp;quot;提示&amp;quot;),MB_OK|MB_ICONINFORMATION); &lt;br&gt;&amp;nbsp;&amp;nbsp;return -1;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;RegisterHotKey(0,0,MOD_CONTROL,(int)&amp;#39;L&amp;#39;);&lt;br&gt;&amp;nbsp;while(1)&lt;br&gt;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;QueryPerformanceCounter(&amp;amp;StartCt); //执行运算前计数值&lt;br&gt;&amp;nbsp;&amp;nbsp;if(PeekMessage(&amp;amp;msg,0,0,0,1))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(msg.message )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case WM_TIMER:&amp;nbsp;TimerProc(0,0,0,0);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break; //预设风向改变时间已到&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case WM_HOTKEY:&amp;nbsp;KillTimer(0,hTimer);//删除随机风向定时 器&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UnregisterHotKey(0,0);//删除退出热键&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InvalidateRect(0,NULL,true);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit(1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case WM_DISPLAYCHANGE:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GetScreenSize(); //重新取屏幕的尺寸&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitSnowNodes(); //初始化雪点的数组&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;MoveSnowNodes();&lt;br&gt;&amp;nbsp;&amp;nbsp;QueryPerformanceCounter(&amp;amp;EndCt);//执行运算后的计数值&lt;br&gt;&amp;nbsp;&amp;nbsp;ElapsedTime=(EndCt.QuadPart-StartCt.QuadPart)/Frequency.QuadPart;&lt;br&gt;&amp;nbsp;&amp;nbsp;if((ElapsedTime&amp;lt;0.0005))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(2); //简单限速&lt;br&gt;&amp;nbsp;&amp;nbsp;else if(ElapsedTime&amp;lt; 0.0010)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sleep(1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(ElapsedTime&amp;lt;0.0015)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sleep(3);&lt;/p&gt; &lt;p&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;//MessageBox(0,TEXT(&amp;quot;消息&amp;quot;),TEXT(&amp;quot;消息&amp;quot;),MB_OK|MB_ICONINFORMATION);&lt;br&gt;&amp;nbsp;return 0;&lt;br&gt;}&lt;br&gt;void GetScreenSize()&lt;br&gt;{&lt;br&gt;&amp;nbsp;ScreenWidth=GetSystemMetrics(SM_CXSCREEN);&lt;br&gt;&amp;nbsp;ScreenHeight=GetSystemMetrics(SM_CYSCREEN); &lt;br&gt;&amp;nbsp;return ;&lt;br&gt;}&lt;/p&gt; &lt;p&gt;void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime)&lt;br&gt;{&lt;br&gt;//&amp;nbsp;MessageBox(0,TEXT(&amp;quot;消息&amp;quot;),TEXT(&amp;quot;消息&amp;quot;),MB_OK|MB_ICONINFORMATION);&lt;br&gt;&amp;nbsp;srand((unsigned)time(NULL));&lt;br&gt;&amp;nbsp;if(hTimer==0)&lt;br&gt; &amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;MessageBox(0,TEXT(&amp;quot;创建定时器失败&amp;quot;),TEXT(&amp;quot;提示&amp;quot;),MB_OK|MB_ICONINFORMATION);&lt;br&gt;&amp;nbsp;&amp;nbsp;return ;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;SetTimer(0,hTimer,((rand()%27+4)*500),(TIMERPROC)TimerProc); //// 重设下次风向改变时间&lt;br&gt;&amp;nbsp;//修改风向&lt;br&gt;&amp;nbsp;if(CrWind!=0) &lt;br&gt;&amp;nbsp;&amp;nbsp;CrWind=0;&lt;br&gt;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CrWind=rand()%3-1;&lt;br&gt;&amp;nbsp;return ;&lt;br&gt;}&lt;/p&gt; &lt;p&gt;void InitSnowNodes()&lt;br&gt;{&lt;br&gt;&amp;nbsp;HDC hScreenDC=0;&lt;br&gt;&amp;nbsp;int j=0;&lt;br&gt;&amp;nbsp;hScreenDC=CreateDC(&amp;quot;DISPLAY&amp;quot;,NULL,NULL,NULL);&lt;br&gt;&amp;nbsp;&amp;nbsp;if(hScreenDC==NULL)&lt;br&gt;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;MessageBox(0,&amp;quot;获取屏幕DC失败!&amp;quot;,&amp;quot;信息&amp;quot;,MB_OK|MB_ICONERROR); &lt;br&gt;&amp;nbsp;&amp;nbsp;return ;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;srand((unsigned)time(NULL));&lt;br&gt;&amp;nbsp;for(j=0;j&amp;lt;SnowNumber;j++)&lt;br&gt;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;SnowNodes[j].postion.x=rand()%ScreenWidth;&lt;br&gt;&amp;nbsp;&amp;nbsp;SnowNodes[j].postion.y=rand()%ScreenHeight;&lt;br&gt;&amp;nbsp;&amp;nbsp;SnowNodes[j].iColor=GetPixel(hScreenDC,SnowNodes[j].postion.x,SnowNodes[j].postion.y); &lt;br&gt;&amp;nbsp;&amp;nbsp;SnowNodes[j].iSpeed=(rand()%5+1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //每次下落距离（1-5）&lt;br&gt;&amp;nbsp;&amp;nbsp;SnowNodes[j].iStick=(30-rand()%SnowNodes[j].iSpeed); //粘贴度（几次循环作一次粘贴连判断&lt;br&gt;//&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;SnowNodes[j].postion.x&amp;lt;&amp;lt;&amp;quot;&amp;nbsp;&amp;nbsp; Y:&amp;quot;&amp;lt;&amp;lt;SnowNodes[j].postion.y&amp;lt;&amp;lt;endl; &lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;}&lt;br&gt;&amp;nbsp;DeleteDC(hScreenDC);&lt;br&gt;}&lt;/p&gt; &lt;p&gt;void MoveSnowNodes()&lt;br&gt;{&lt;br&gt;//&amp;nbsp;MessageBox(0,TEXT(&amp;quot;消息&amp;quot;),TEXT(&amp;quot;消息&amp;quot;),MB_OK|MB_ICONINFORMATION);&lt;br&gt;&amp;nbsp;HDC hScreenDC=0;&lt;br&gt;&amp;nbsp;srand((unsigned)time(NULL));&lt;br&gt;&amp;nbsp;int x=0,y=0,i=0;&lt;br&gt;&amp;nbsp;hScreenDC=CreateDC(&amp;quot;DISPLAY&amp;quot;,NULL,NULL,NULL); &lt;br&gt;&amp;nbsp;if(hScreenDC==NULL)&lt;br&gt;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;MessageBox(0,&amp;quot;获取屏幕DC失败!&amp;quot;,&amp;quot;信息&amp;quot;,MB_OK|MB_ICONERROR);&lt;br&gt;&amp;nbsp;&amp;nbsp;return ;&lt;br&gt;&amp;nbsp;}&lt;br&gt;//&amp;nbsp;TextOut(hScreenDC,0,0,&amp;quot;虽然大检查顺顺藤摸瓜克格勃呀加&amp;quot;,0);&lt;br&gt;&amp;nbsp;for(i=0;i&amp;lt;SnowNumber;i++)&lt;br&gt; &amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;//控制雪点下降速度&lt;br&gt;&amp;nbsp;&amp;nbsp;if((CrStep%SnowNodes[i].iSpeed)!=0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;br&gt;&amp;nbsp;&amp;nbsp;//恢复上次被覆盖点&lt;br&gt;&amp;nbsp;&amp;nbsp;if((GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y))==0XFFFFFF)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y,SnowNodes[i].iColor); &lt;br&gt;&amp;nbsp;&amp;nbsp;//根据几向作随机飘落&lt;br&gt;&amp;nbsp;&amp;nbsp;x=SnowNodes[i].postion.x+rand()%3+CrWind;&lt;br&gt;&amp;nbsp;&amp;nbsp;y=SnowNodes[i].postion.y+SnowNodes[i].iMove;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;//积雪（停留）效果处理&lt;br&gt;&amp;nbsp;&amp;nbsp;if(&amp;nbsp; ( (CrStep%SnowNodes[i].iStick)==0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;( (GetPixel(hScreenDC,x,y))!=(GetPixel(hScreenDC,x,y+1)))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;( (GetPixel(hScreenDC,x-1,y))!=(GetPixel(hScreenDC,x-1,y+1)))&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;( (GetPixel(hScreenDC,x+1,y))!=GetPixel(hScreenDC,x+1,y+1))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//稍稍调整坐标&lt;b
