• chrome扩展程序开发


    一、概述

    1、查看及运行扩展程序

    • 点击右上角,更多工具--->扩展程序

      

    • 在这里可以看到已经添加的扩展程序;
    • 选择右上角的‘开发者模式’,会出现下面的扩展程序的按钮;
    • 点击‘加载已解压的扩展程序……’,可以直接加载并调试扩展程序(也可以直接把文件夹直接拖过来);
    • 点击‘打包扩展程序……’,可以把程序打包为一个.crx文件,便于发布使用。

    2、扩展的组成

    • manifest.json(是扩展的调度中心,声明各种资源)
    • js文件(写各种操作)
    • 图标(可选,最好是19px*19px)
    • popup页面、options页面(可选,点图标的弹出页面、在扩展页选项的弹出窗口)
    • css文件(可选)

    二、调试

    1、查看扩展程序信息

    • 点击右上角,更多工具--->扩展程序,查看已添加的扩展程序,如下图:

    2、查看popup页面

    • 右键单击扩展程序的图标,选择‘审查弹出内容’,就会出现一个Developer Tools窗口,可以查看popup的代码,也可以查看其它文件如js和css的代码。

    三、架构

    1、不可视的background页面

    • 写扩展的主要业务逻辑
    • 两种:一种是 persistent background pages(持续运行),另一种是 event pages(事件驱动)
    • 在manifest.json文中注册Persistent background page如下:
      {
      
          "background": {}
      
          "scripts": [myBackgroundPage.js],
          
          "persistent": true
      
          }
      
      }
    • 在manifest.json文中注册Event page如下:
      {
      
          "background": {
      
          "scripts": [myEventPage.js],
      
          "persistent": false
      
          }
      
      }

    2、可视页面

    • browser actions:可作用于任何页面,图标在地址栏外
      "browser_action": {
          "default_icon": "icon.jpg",
          "default_title": "Baicaowei AutoReserve",
          "default_popup": "popup.html"
        },

      default_icon:图标(最好19px*19px)

      default_title:标题

      default_popup:弹出框

    • page actions:作用于某一页面,图标在地址栏内
      "page_action": {
          "default_icon": "icon.jpg",
          "default_title": "Baicaowei AutoReserve",
          "default_popup": "popup.html"
        },

      控制Page Action的图标显示使用chrome.pageAction.show(integer tabId)方法

      控制Page Action的图标隐藏使用chrome.pageAction.hide(integer tabId)方法

      点击Page Action的图标绑定事件使用chrome.pageAction.onClicked.addListener(function (tab) {…})方法

    • 其它:context menu,右键菜单; options 页面;override页面(替换浏览器中打开的默认页面);通过chrome.tabs.create()或window.open()打开的页面
      • override页面(没用过)
        "chrome_url_overrides" : {
            "pageToOverride": "myPage.html"
        },

        pageToOverride的值可以是bookmarks、history、newtab,然后就可以编辑用以替换的myPage.html页面了

    3、扩展与web页面/服务器之间的交互

    • 与页面交互:content scripts
      "content_scripts": [
          {
            //content script注入的页面(必选)
            "matches":[   
              "http://www.xxx.com/xxx.htm*"
            ],
            "js":[
              "js/jquery.js",
              "js/honor.js"
            ],
           "css": ["mystyles.css"],
           "run_at":"document_idle", 

      "all_frames": true //js是否在所有匹配的页面的框架中运行
      }
      ],
    • 与服务器交互:跨域的 XMLHttpRequest

    4、使用Chrome浏览器专有的API(chrome.*API)

    5、扩展中的各页面之间的数据通信(多页面时用)

    • 扩展中的所有页面都运行于同一个进程中的同一个线程,所以各个页面可以通过一定的方法直接调用。
    • 如通过chrome.extension.getViews()获得所有可视页面的window对象的数组,通过chrome.extension.getBackgroundPage()获得不可视的background页面的window对象。通过页面的window对象就可以对页面的DOM进行任何操作。
  • 相关阅读:
    【Storm篇】--Storm从初始到分布式搭建
    【Storm篇】--Storm 容错机制
    git命令log与reflog的比较
    长时间不操作Navicat或Putty会断线?
    git使用ssh密钥
    公钥能用公钥解吗?
    什么是公钥,,什么是密钥啊 ?有什么区别吗?
    CSS滑动门
    Html设置文本换行与不按行操作
    设置鼠标光标与页面favicon
  • 原文地址:https://www.cnblogs.com/MaiJiangDou/p/7091010.html
Copyright © 2020-2023  润新知