• 官方文档 First extension
  • 目录结构
    1. firefox tree
    2. .
    3. └── borderify
    4. └── manifest.json // 必须
    5. directory, files
    • manifest.json 内容
      1. {
      2. "manifest_version": , // 必须
      3. "name": "Borderify", // 必须
      4. "version": "1.0", // 必须
      5. "description": "Adds a red border to all webpages matching mozilla.org.",
      6. "content_scripts": [
      7. {
      8. "matches": ["*://*.mozilla.org/*"], // 匹配url,<all_urls> 匹配所有
      9. "js": ["content-script.js"] // 本地创建一个 content-script.js用来编写js代码实现插件功能
      10. }
      11. ] // 加载matches所匹配的url时,会加载所给定的js脚本
      12. }

      Content Scripts详解

      •   使用 WebExtension APIs

        调用某些API需要声明权限,需要在manifest.json里面使用permission关键字请求跨域权限 
        这样content script才能很好的使用WebExtension APIs

    • permission API权限

      • 后台脚本

        •    在manifest.json里面添加background关键字
        1. "background": {
        2. "scripts": ["background.js"]
        3. }
  • ############################
  • Content Scripts 不能直接使用大部分WebExtension APIs, 
    但是可以通过信息messaging APIs与扩展后台脚本通信, 
    这样间接地调用所有的后台脚本能够调用的APIs

    例子: 监听点击事件,点击后发送地址给后台脚本

    • 目录结构

      1. firefox tree
      2. .
      3. └── borderify
      4. ├── background.js
      5. ├── content-script.js
      6. └── manifest.json
      7. directory, files
      • manifest.json
        1. {
        2. "manifest_version": ,
        3. "name": "Borderify",
        4. "version": "1.0",
        5. "description": "My Firefox Plugin Study",
        6. "icons": {
        7. },
        8. "content_scripts": [
        9. {
        10. "matches": ["<all_urls>"],
        11. "js": ["content-script.js"]
        12. }
        13. ],
        14. "permissions": [
        15. "webRequest",
        16. "notifications", // 如果要使用notification api 就必须要加这个
        17. "<all_urls>" // 允许所有的url
        18. ],
        19. "background": {
        20. "scripts": ["background.js"]
        21. }
        22. }
        • content-script.js
          1. window.addEventListener("click", notifyExtension); // 给每个对象绑定click事件
          2. console.log("content-sciprt.js start");
          3. function notifyExtension(e)
          4. {
          5. console.log(e.target.tagName);
          6. if(e.target.tagName != "A") // 判断tagname是否是link标签(a标签)
          7. {
          8. return ;
          9. }
          10. console.log(e.target.href+"sadsd");
          11. broswer.runtime.sendMessage({"url": e.target.href}); // 发送消息到后台
          12. }
          13. console.log("content-sciprt.js end");
          • background.js
            1. console.log("background.js start"):
            2. browser.runtime.onMessage.addListener(notify); // 设置消息监听
            3. function notify(message)
            4. {
            5. browser.notifications.create({
            6. "type": "basic",
            7. "title": "you click a link",
            8. "message": message.url + 'sdsd'
            9. });
            10. }
            11. console.log("background.js end");

            browser.notifications.create文档

              • 运行测试 
                进入about:debugging后添加临时扩展测试 

Firefox开发的更多相关文章

  1. Firefox上Web开发工具库一览

    Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...

  2. 前端教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-资源汇总

    内容精简 资源这么多,多看看多学习再总结肯定是好的.多读读就算看重了不算浪费时间,毕竟一千个读者就有一千个林黛玉,还有温故而知新,说不定多读一些内容,就发现惊喜了呢.不过,在此也精简一些内容,就1~2 ...

  3. firefox native extension -- har export trigger

    这两天想学习下如何在运行自动化脚本时去capture http traffic,google看到一篇博客介绍用browser mob proxy或者firefox+firebug+netexport, ...

  4. javascript错误处理与调试(转)

    JavaScript 在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑. ECMAScript 第 3 版为了解决这个问题引入了 try...catch 和 throw 语 ...

  5. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  6. Sublime Text 最佳插件列表(转)

    Package Control 安装方法 首先通过快捷键 ctrl+` 或者 View > Show Console 打开控制台,然后粘贴相应的 Python 安装代码. Sublime Tex ...

  7. 推荐!Sublime Text 最佳插件列表

    本文由 伯乐在线 - 艾凌风 翻译,黄利民 校稿.英文出处:ipestov.com.欢迎加入翻译组. 本文收录了作者辛苦收集的Sublime Text最佳插件,很全. 最佳的Sublime Text ...

  8. 深入浅出ES6(六):解构 Destructuring

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 什么是解构赋值? 解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性 ...

  9. Sublime Text各种插件使用方法

    有快捷键冲突的时候可以修改快捷键,建议修改插件快捷键而不是Sublime Text的快捷键,我的有冲突的一律将插件快捷键设置成:Ctrl+Alt+A(B...) Package Control 通俗易 ...

随机推荐

  1. PHP扩展模块redis安装

    PHP扩展redis模块安装 当我们安装好php之后可能会忘记装一些模块,或者需要增加模块的时候我们可以使用扩展模块安装. 查看php加载了哪些模块,使用命令 /usr/local/php/bin/p ...

  2. 优化Eclipse基本配置

    eclipse有很多默认配置会造成其本身运行缓慢,特别是加载大型工程的时候,以下列举的几种方法可以优化eclipse的运行速度,加快工程的加载和构建. 关闭XML Validation 1. 关闭当前 ...

  3. 用javascript调用表单验证事件时,为什么return false了还是把表单submit了?

    表单提交前,都会有定义一个验证的方法以对用户提交的内容进行限定,今天写到了这个,但出现了一个好郁闷的东西,就是一点提交了,调用我自己写的一个CheckForm()方法时,我明明写了return fal ...

  4. DPDK中使用VFIO的配置

    VFIO VFIO是一个可以安全地把设备I/O.中断.DMA等暴露到用户空间(userspace),从而可以在用户空间完成设备驱动的框架.用户空间直接设备访问,虚拟机设备分配可以获得更高的IO性能. ...

  5. spring学习笔记---数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...

  6. springmvc整合mybatis框架源码 bootstrap html5 mysql oracle maven SSM

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  7. [java之设计模式]策略模式

    策略模式(strategy pattern) 定义>> 将一系列的算法封装到一些列的类里面,并且可以相互替换 作用>> 将算法的变化独立于客户端,将算法的指责和算法的行为分开, ...

  8. 12c数据库重启后自动启动pdb

    由于最近管理12c数据库,创建了9个新的pdb.相对于以前11g版本每天一个一个的环境检查,方便了很多. 但是因为一次意外宕机,数据库重启.虽然数据库重启,但是管理的pdb确不能自动重启,所以需要手动 ...

  9. react 第一个组件 “hello world!”

    一:在src下面新建Welcome.js 二:在Welcome.js中使用类式写法: import React from "react" class Welcome extends ...

  10. 用JavaScript获取URL参数的方法之一

    若地址栏URL为:abc.html?m=tomms&c=allsearchlist&pageNo=1&pageNum=20&text=1 <script> ...