`
mabusyao
  • 浏览: 253397 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Firefox扩展开发 -2

阅读更多
FirefoxOverlay.xul
顾名思义,overlay就是覆盖的意思。我们已经看过FF默认的browser.xul文件了,那么可以理解在上一节中的chrome.manifest中overlay一行便是要用后者来覆盖前者的内容。

先看firefoxOverlay.xul文件:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://huang/skin/overlay.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://huang/locale/huang.dtd">
<overlay id="huang-overlay"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script src="overlay.js"/>
  <stringbundleset id="stringbundleset">
    <stringbundle id="huang-strings" src="chrome://huang/locale/huang.properties"/>
  </stringbundleset>

  <menupopup id="menu_ToolsPopup">
    <menuitem id="huang-hello" label="&huang.label;" 
              oncommand="huang.onMenuItemCommand(event);"/>
  </menupopup>
</overlay>

整段代码是被包在Overylay节点中的,其中的前两个节点在上一节中已经提到,script代表导入该js代码,StringBundleset则是用来添加stringbundle。

menupopup对于我们来说是个新鲜东西,可是从字面上我们还是可以猜测出它的用处,menu的弹出框。

既然是overlay,那么这段代码显然有相应的内容在browser.xul文件里面,而id则是用来标识将被overlay的节点的,果然在brwoser.xul中,我们也找到了ID名为menu_ToolsPopup的节点。  这样一来,这段代码的含义就显而易见了,很简单,在menu_ToolsPopup这个节点中增加一个名为menuitem的子节点,我相信label中的&符号表意是指从huang.properties中寻找这样一个value并作为label。oncomand大概就是时间处理吧。至于为什么是huang.为前缀呢?这个倒是没有明白,难道是应该我自己在哪个地方实现这个方法?最有可能的就是overlay.js文件了。不过我们还是接着往下看吧。

Overlay.js
果然,就在FirefoxOverlay.xul旁边,我们发现了Overlay.js:
var huang = {
  onLoad: function() {
    // initialization code
    this.initialized = true;
    this.strings = document.getElementById("huang-strings");
  },
  onMenuItemCommand: function(e) {
    var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
    promptService.alert(window, this.strings.getString("helloMessageTitle"), this.strings.getString("helloMessage"));
  },
};
window.addEventListener("load", function(e) { huang.onLoad(e); }, false);


正如我们之前所猜想的,overlay.js文件中包含了onMenuItemCommand方法。

这个方法倒也简单,先获取一个服务类,然后这个服务类弹出一个对话框。 至于这个类到底是个什么东东,我估计不外乎是ff自己提供的一些服务。 有意思的是对话框中这一段:this.strings.getString("helloMessageTitle")。 我觉得应该还是从某个地方获取值,但是this.strings究竟是什么东西呢?

在onLoad函数里面,似乎给了我们一些解释。 但是不明确,还是接着往下看吧。

locale
locale文件夹下只有一个子文件en-US,打开之后有两个文件,huang.properties和huang.dtd。两者都很好理解,而且我们发现huang.properties 文件中的内容跟this.strings里面的一样,那么,我们就可以认为document.getElementById("huang-strings"),通过locale,获取了正确的properties文件。虽然目前我们还不知道具体是什么原因。

再回头看FirefoxOverlay.xul文件:
<stringbundleset id="stringbundleset">
    <stringbundle id="huang-strings" src="chrome://huang/locale/huang.properties"/>

原来是从这里获得的。

Skin文件夹里面的东西就比较简单了,就是一个css文件。
/* This is just an example.  You shouldn't do this. */
#huang-hello
{
  color: red ! important;
}



分享到:
评论

相关推荐

    Firefox扩展实例-HelloWorld

    在Firefox扩展开发中,这可能表现为在浏览器的工具栏上添加一个按钮,点击后会在浏览器的页面上显示一条简单的问候信息。 Firefox扩展的核心组件包括以下几个部分: 1. **manifest.json**:这是扩展的元数据文件,...

    firefox 扩展开发示例

    本示例将带你深入理解Firefox扩展开发,包括如何创建、配置和发布一个扩展。 首先,我们需要了解Firefox扩展的基本结构。一个标准的Firefox扩展通常包含以下几个部分: 1. **manifest.json**:这是扩展的核心文件...

    firefox插件开发,firefox plugin 开发 firefox 扩展 开发

    - 当扩展开发完成后,需要将其打包成XPI文件,进行签名验证,然后可以在Firefox附加组件网站或其他平台发布。 7. **持续学习和资源**: - 提到的博客文章提供了额外的开发技巧和注意事项,如CSDN上的文章,可以...

    火狐浏览器-firefox-httprequester-2.2-fx.xpi

    火狐浏览器(Firefox)是一款由Mozilla开发的开源网络浏览器,以其强大的安全性、隐私保护和定制性而受到全球用户的喜爱。在火狐浏览器的发展过程中,它不断进行更新和优化,以适应互联网技术的进步和用户需求的变化...

    Firefox-full-latest

    2. **隐私保护**:Firefox提供严格的隐私模式,可以阻止网站追踪,还有一项名为“增强跟踪保护”(Enhanced Tracking Protection)的功能,自动拦截第三方追踪 cookie。 3. **开放源代码**:Firefox的源代码基于...

    Firefox扩展开发详解

    Firefox扩展开发是一个面向开发者的技术,它允许用户自定义和增强Firefox浏览器的功能。本文将深入探讨Firefox扩展开发的各个方面,从基础结构到核心组件,帮助开发者理解如何构建自己的Firefox扩展。 首先,一个...

    刷UCHome的火狐扩展--Homezilla

    XPI全称为"eXtension Package Installer",是Firefox浏览器用来安装扩展的一种打包格式。Homezilla.xpi文件就是一个典型的XPI文件,包含了Homezilla扩展的所有代码和资源。安装时,用户只需下载此文件并拖放到火狐...

    Firefox火狐浏览器官方2.0.0.20-win32版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。本资源是Firefox的2.0.0.20-win32版本,专为32位Windows系统设计,提供了稳定、高效的浏览...

    firefox extension 开发例子

    Firefox扩展(Extension)开发是为Mozilla Firefox浏览器定制功能或改变其外观的一种技术。这个压缩包包含的文件是创建Firefox扩展的基础组件。 1. **chrome.manifest**:这是Firefox扩展的核心配置文件之一,它...

    基于 Mozilla firefox 的扩展开发

    2. **WebExtensions**:一种通用的跨浏览器扩展开发框架,使得 Firefox、Chrome 和 Safari 等浏览器的扩展可以共享大部分代码。 3. **Addon SDK**:虽然不再推荐使用,但对于初学者来说,其提供了更简单的 API 和...

    firefox-3.6.8-for-linux

    2. “fireftp-1.0.9-fx.xpi”是一个Firefox扩展文件,XPI是“Cross Platform Installer”的缩写。FireFTP是Firefox的一款FTP客户端插件,版本1.0.9,它允许用户通过浏览器直接安全地上传和下载文件到FTP服务器。安装...

    firefox 扩展开发技巧

    ### Firefox扩展开发技巧详解 Firefox 是一款非常受欢迎的开源浏览器,因其高度的可定制性和丰富的扩展功能而备受用户青睐。本文旨在深入解析 Firefox 扩展开发的基础知识与实用技巧,帮助开发者快速上手并掌握核心...

    Mozilla,firefox 扩展学习

    Mozilla和Firefox扩展开发是Web开发领域的一个重要分支,它允许开发者为火狐浏览器定制功能,增强用户体验或提供特定服务。本文将深入探讨Mozilla扩展的基本概念、开发环境搭建、API使用以及实战示例。 一、Mozilla...

    firefox-nightly-10.0a1+firebug+简体中文语言包

    标签“火狐”、“firefox”和“firebug”是对这个压缩包内容的关键词标注,便于搜索和理解其主要内容。同时,“nightly”表明了Firefox的开发状态。 压缩包内的文件名: 1. "firebug-1.9.0a4.xpi" 是Firebug插件的...

    Firefox火狐浏览器官方51.0b2-win32版本exe安装包

    《Firefox火狐浏览器51.0b2-win32版本:深入解析与使用指南》 Firefox,这款由Mozilla基金会开发的开源网络浏览器,以其强大的安全性能、高度的可定制性和出色的隐私保护机制,在全球范围内拥有大量的忠实用户。...

    firefox扩展插件制作小综合

    综上所述,"Firefox扩展插件制作小综合"这个主题涵盖了从基础的JavaScript编程到高级的Firefox扩展开发技巧。通过学习这些内容,开发者不仅可以创建自定义的浏览器插件,还能深入了解浏览器的工作原理,提升自身的...

    Firefox火狐浏览器官方45.0b1-win32版本exe在线安装包

    《Firefox火狐浏览器45.0b1-win32版本:深入解析与使用指南》 Firefox,这款由Mozilla基金会开发的开源网络浏览器,以其强大的安全性能、高度的自定义性和丰富的扩展插件闻名于世。在本文中,我们将聚焦于Firefox的...

    firefox plug-in

    值得注意的是,Firefox在不断推进WebExtensions标准,这是一种基于Chrome扩展模型的API,旨在为所有现代浏览器提供统一的扩展开发平台。这意味着未来大部分插件将采用WebExtensions进行开发,以提高兼容性和安全性。...

    firefox扩展编程手册

    《Firefox扩展编程手册》是一本深入探讨Firefox浏览器扩展开发的专业教程,主要面向对Web技术和Firefox扩展感兴趣的开发者。这本书英文版提供了全面的指南,涵盖了从环境搭建到扩展分发的整个流程,帮助开发者们掌握...

    Firefox火狐浏览器官方Setup 45.0b2-win64版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。本篇文章将深入探讨Firefox 45.0b2-win64版本的安装包,为用户带来详尽的使用指南。 首先...

Global site tag (gtag.js) - Google Analytics