美文网首页
chrome插件开发

chrome插件开发

作者: 白白白大爷_SimonLau | 来源:发表于2021-02-03 14:53 被阅读0次

    关键字: chrome扩展、chrome extensions、chrome插件操作dom

    今天来自己实现添加一个chrome扩展。

    版本

    • 83.0.4103.61(正式版本) (64 位)

    入口

    • chrome://extensions/
    • chrome -> 更多工具 -> 扩展程序
    • 打开开发者模式,点击加载已解压的扩展程序

    manifest文件

    首先要有一个JSON格式的manifest文件

    {
      "manifest_version": 2,
      "name": "登录",
      "version": "1.0",
      "description": "描述文案",
      "browser_action": {
        "default_icon": "images/login.png",
        "default_title": "鼠标悬浮文案",
        "default_popup": "popup/index.html"
      },
      "background": {
        "scripts": ["background/background.js"]
      },
      "permissions": [
        "contextMenus"
      ],
      "icons": {
        "48": "images/login.png",
        "128": "images/login.png"
      },
      "content_scripts": [{
        "matches": ["*://*/*"],
        "js": ["content.js"]
      }]
    }
    

    1,以下三个字段为必须:

    manifest_version -- 表示manifest文件自身格式的版本号, 需指定为2
    name -- 用来标识扩展的简短纯文本。
    version -- 扩展的版本,用一个到4个数字来表示,中间用点隔开。
    

    2,icons配置扩展管理页面使用的图标。图标要求是png格式,通常是128x128或48x48的图标。

    "icons": 
      {           
        "48": "icon48.png",            
        "128": "icon128.png" 
      }
    
    如下图左上角小狮子: 扩展信息图

    3,background
    背景页是一个运行在扩展进程中的HTML页面。它在你的扩展的整个生命周期都存在,可以用来管理一些任务或者状态,比如使用背景页来在Chrome的右键菜单中增加自己的菜单项.

    "background": {
        "scripts": ["background.js"]
     }
    

    浏览器的扩展系统会自动根据上面scripts字段指定的所有js文件自动生成背景页。
    如果您的确需要自己的背景页,可以使用page字段,比如:

      "background": {
        "page": "background.html"
      }
    

    4,Context Menus
    用于在Chrome的右键菜单中增加自己的菜单项。
    1)首先必须在清单中声明“contentMenus”权限。

    "permissions": [
       "contextMenus"
     ]
    
    

    2)通过id 和 parentId来构建父子菜单关系,onclick声明点击后的回调函数。

    const menu = {
        "menus": [
          {"id": "main", "title": "login" },
          {"id": "login", "title": "填充密码", "parentId": "main", onclick: () => cb('login')}
        ]
      };
     
      const createMenu = () => {
       menu.menus.forEach(value => {
         chrome.contextMenus.create(value);
       })
     };
     createMenu()
    

    5,Browser Actions
    可以在chrome主工具条的地址栏右侧增加一个图标。

    "browser_action": {
        "default_icon": "images/login.png",
        "default_title": "点我",
        "default_popup": "popup/index.html"
    }
    
    default_icon -- 展示icon。
    default_title -- 鼠标悬浮icon上时浮现的文案。
    default_popup -- 用来创建点击图标后弹出的选项内容html。
    

    该html中可以引用js文件,来增加你想增加的交互逻辑。需要注意的是,此时你无法与浏览器当前所访问页面的元素进行交互。也就是说,无法对当前web页面的dom元素进行操作。
    但你可以通过使用messages机制来进行通信,先获取当前tab信息,然后通过chrome.tabs.sendMessage把信息传递出去。由Content Scripts进行接收执行。

    - popup/index.html
    <body>
        <li id="login">popup选项</li>
      <script src="./index.js"></script>
    </body>
    
    - index.js
    const login = document.getElementById('login');
    
    login.addEventListener('click', ()=> {
      chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
        var activeTab = tabs [0]; 
        chrome.tabs.sendMessage(activeTab.id, { action: "login" })
      })
    })
    

    6, Content Scripts
    在Web页面内运行的javascript脚本。通过使用标准的DOM,它们可以获取浏览器所访问页面的详细信息,并可以修改这些信息。

    "content_scripts": [{
        "matches": ["*://*/*"],
        "js": ["content.js"]
      }]
    

    通过chrome.runtime.onMessage可以接收传递的信息,并执行相应的dom操作。

    chrome.runtime.onMessage.addListener(function(request, sender, sendMessage) {
      if (request.action == "login"){
        // action
      }
    

    [参考链接]http://open.chrome.360.cn/extension_dev/overview.html

    相关文章

      网友评论

          本文标题:chrome插件开发

          本文链接:https://www.haomeiwen.com/subject/ulijtltx.html