火狐拓展开发 基础知识
平时经常碰到一些零碎的知识,或者其他什么好文章/知识点/插件/库等等,因为实在太多书签已插乱...于是想着干脆写个火狐小add-on。
首先找到了这里ADD-ON SDK:
Using the Add-on SDK you can create Firefox add-ons using standard Web technologies: JavaScript, HTML, and CSS. The SDK includes JavaScript APIs which you can use to create add-ons, and tools for creating, running, testing, and packaging add-ons.
使用Add-on SDK你可以用标准的web技术——javascript,html,css开发火狐add-ons。SDK包含了js API,供你创建add-ons,以及创建、运行、测试、打包add-on的工具(即cfx命令行,cfx run,cfx test,cfx xpi等)。
开发小组件(add-on,附件组件)过程中发现仅使用js,html,能够完成的功能有限,尤其没有办法直接使用火狐的一些默认用户界面,右键菜单(反正我是还没有找到调用方法)。结果自己用html拼了一个出来,虽说其他一些图形界面也能够写出来,但有点绕了远路的感觉。做个小东西自己用用的话,差不多可以,但想增加一些比较高级(?)的功能的话会比较困难。以下是正文,火狐拓展开发介绍。
知识均来源于XUL|MDN。主要是一些概念的介绍。
Firefox and other Mozilla applications can be seen as composed of two different parts: a user interface layer that is distinct for each project, and a common platform on top of which the interface layer is built. The user interface is built with technology known as XUL, and the platform is known as XULRunner.
火狐以及其他MOzilla应用可以看作是由两个部分组成:用户界面层——每个项目各不相同,以及一个共同的平台,界面均建立于它之上。用户界面使用XUL技术,平台则为XULRunner.
在介绍XUL与XULRunner之前,先了解一下add-on(附加组件)和extension(拓展)的区别:
An extension is a small application that adds something new to one or more Mozilla applications.
所有拓展都是附加组件,但附加组件也可以是主题、插件、或是语言包等。XUL教程主要讲的是关于拓展开发,而主题、语言包的开发与它十分相似。而插件则完全不同,在教程里不会提到。
Extensions now exist in 3 different forms: Add-ons SDK extensions (also known as Jetpacks), bootstrapped extensions and traditional extensions. If you're only getting started developing add-ons, the Add-ons SDK provides a great way to quickly create simple ones and build on them. This tutorial focuses on traditional extensions, which are created differently. Bootstrapped extensions are a step above traditional ones in complexity, so you should go through this tutorial before giving them a try.
拓展现在有三种形式:Add-ons SDK 拓展、bootstrapped拓展以及传统拓展。如果你是刚刚开始开发组件,add-on SDk提供了快速开发简单组件的方法。XUL教程主要关注传统拓展的开发,这也将相对比较复杂。bootstrapped拓展在难度上将更上一层,在尝试之前,建议先看完此教程。
大致就是这么一回事了。
XUL(XML User Interface Language):Mozilla用于创建类似firefox之类应用的用户界面 的基于XML的语言。
XUL十分强大。在用html边看教程边写代码时遇到的问题,XUL轻轻松松就解决了。
比如:
比如:drag and drop
被拖拽元素的一个半透明的表现将随着鼠标移动。放置(drop)位置可以是另外一个应用。可以设置拖动时显示的图片,拖动效果:被拖动元素是copy/move/link.
也就是说平时用到的效果基本都能自己调用~提供了很多command,右键菜单写个<menu></menu>,加上事件就好,一些默认事件可以调用cmd,cmd_copy,cmd_paste等。参见List of Commands.
顺便说下add-on sdk.
开发语言:html,js,css,以及sdk提供的接口。
开发方法:限于目前我的了解。
主要文件:main.js.负责运行add-on的主脚本语言。
负责与html/panel/widget等页面内容交互的脚本。比如访问打开的html页面,一般需建一个page-mod对象。通过该对象与其对应的contentScriptFile:XX.js,之间通信(sdk提供的通信接口),来实现与页面的交互。widget,panel同理。
以上。
转载于:https://www.cnblogs.com/cydin/p/3353196.html
火狐拓展开发 基础知识相关推荐
- SP 短信开发-基础知识篇
SP 短信开发-基础知识篇 很土的话题,但是最近帮朋友做这个东西,所以写点东西出来给初学者参考. 一.准备资料 SP开发资料网站上有很多,但是主要是以下几个文档: 1.MISC1.6 SP订购通知接口 ...
- iOS开发基础知识--碎片44
iOS开发基础知识--碎片44 iOS开发基础知识--碎片44 1:App跳转至系统Settings 跳转在IOS8以上跟以下是有区别的,如果是IOS8以上可以如下设置: NSURL *url = ...
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...
- IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议
1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...
- IM开发基础知识补课(一):正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- iOS开发基础知识--碎片27
iOS开发基础知识--碎片27 1:iOS中的round/ceil/floorf extern float ceilf(float); extern double ceil(double); ext ...
- IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理
1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之Pinctrl子系统和GPIO子系统的使用
文章目录 前言 1.Pinctrl子系统 1.1.为什么有Pinctrl子系统 1.2.重要的概念 1.3.代码中怎么引用pinctrl 2.GPIO子系统 2.1.为什么有GPIO子系统 2.2.在 ...
最新文章
- 我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元
- ML机器学习导论学习笔记
- 扫地机器人的特点描写_描写扫地机器人五年级作文500字
- 【普通の随笔】6.30
- mysql延时优化教程_Mysql优化之延迟索引和分页优化_MySQL
- 大数据可视化平台优点在哪
- static关键字(pass)
- Android学习手册:JSON解析工具比较
- 台式电脑设置同时访问内外网
- 利用HTML完成登陆界面设计
- 戴尔笔记本电脑耳机插入声音外放问题
- 硬盘性能测试DD命令详解
- 《灵飞经》①洪武天下 第三章 东岛三尊
- 成功破解苹果iPhone全功能之网友教程篇
- jquery省市县三级联动
- windows电脑系统优化
- android8 Camera2 从 CameraService 到 HAL Service
- jodconverter,openoffice文档转换pdf 所需jar包
- 全网首发AutoCAD 2011 XP_Win7 64位精简版
- 常用移动应用 Packagename 和 URL Scheme
热门文章
- php博客浏览人数,在博客中实现浏览次数的统计
- java 窗体隐藏和关闭_java JFrame窗体真正关闭
- 虚拟服务器的运行原理,虚拟机复制的工作原理
- 2018会考计算机成绩查询入口,2018年山东会考成绩查询时间及入口
- webrtc android ndk,webrtc 针对 android 平台的编译和运行
- 捷途ipel平台怎么样_奇瑞捷途X有望搭载北斗、GPS双导航系统
- 案例分析 陆金所_平安陆金所介绍-关于陆金所-平安陆金所
- c语言 char转int_C语言关键字及进制的转换你都知道吗?
- android 8.0可以实现后台包活么,Android 8.0 应用保活实践 · Jaqen Ng
- php将数组最后一个单元弹出,php array_pop()数组函数将数组最后一个单元弹出(出栈)...