zoukankan      html  css  js  c++  java
  • js:浏览器插件

    1、chrome

    background.js

    //chrome.webRequest.onBeforeRequest.addListener(function(info) {
    //    chrome.tabs.executeScript({code: 'console.log("' + info.url + '")'});
    //    chrome.tabs.getSelected(null, function(tab) {
    //        chrome.tabs.sendMessage(tab.id, info.url);
    //    });
    //    return;
    //},{urls: ["<all_urls>"]}, ["blocking"]);
    
    chrome.webRequest.onCompleted.addListener(function(info) {
        //chrome.tabs.executeScript({code: 'console.log("' + info.url + '")'});
        chrome.tabs.getSelected(null, function(tab) {
            chrome.tabs.sendMessage(tab.id, info.url);
        });
        return;
    },{urls: ["<all_urls>"]});
    
    
    chrome.webRequest.onErrorOccurred.addListener(function(info) {
        //chrome.tabs.executeScript({code: 'console.log("' + info.url + '")'});
        chrome.tabs.getSelected(null, function(tab) {
            chrome.tabs.sendMessage(tab.id, "!" + info.error + "!" + info.url);
        });
        return;
    },{urls: ["<all_urls>"]});

    content.js

    console.log("content.js");
    
    chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
        console.log(msg);
        document.body.text += msg + "
    ";
    });

    manifest.json

    {
      "name": "test",
      "version": "1.0",
      "description": "Test",
      "background": {
        "persistent": true, 
        "scripts": ["background.js"]
      },
      "content_scripts": [
        {
          "js": ["content.js"],
          "matches": ["http://*/*", "https://*/*"], 
          "run_at": "document_start"
        }
      ],
      "permissions": [
        "tabs", 
        "<all_urls>",
        "webRequest", 
        "webRequestBlocking"
      ],
      "manifest_version": 2
    }

    【另外chrom浏览器插件的编写学习见:https://www.cnblogs.com/champagne/p/4848520.html】

    2、firefox

    background.js

    //browser.webRequest.onBeforeRequest.addListener(function(info) {
    //    browser.tabs.executeScript({code: 'console.log("' + info.url + '")'});
    //    return;
    //},{urls: ["<all_urls>"]}, ["blocking"]);
    
    browser.webRequest.onCompleted.addListener(function(info) {
        //chrome.tabs.executeScript({code: 'console.log("' + info.url + '")'});
        browser.tabs.query({currentWindow: true,active: true}).then(function (tabs){
            for (let tab of tabs) {
                browser.tabs.sendMessage(tab.id,info.url);
            }
        });
        return;
    },{urls: ["<all_urls>"]});
    
    browser.webRequest.onErrorOccurred.addListener(function(info) {
        //chrome.tabs.executeScript({code: 'console.log("!' + info.url + '")'});
        browser.tabs.query({currentWindow: true,active: true}).then(function (tabs){
            for (let tab of tabs) {
                browser.tabs.sendMessage(tab.id,"!" + info.error + "!" + info.url);
            }
        });
        return;
    },{urls: ["<all_urls>"]});

    content.js

    //console.log("content.js");
    
    browser.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
        console.log(msg);
        document.body.text += msg + "
    ";
    });

    manifest.json

    {
        "manifest_version": 2,
        "name": "adtest",
        "version": "1.0",
        "description": "get urlinfo where access a website",
        "background": {
            "scripts": ["background.js"]
        },
        "content_scripts": [
            {
              "js": ["content.js"],
              "matches": ["http://*/*", "https://*/*"], 
              "run_at": "document_start"
            }
        ],
        "permissions": [
            "tabs", 
            "<all_urls>",
            "webRequest", 
            "webRequestBlocking"
        ],
        "applications": {
           "gecko": {
                "id": "borderify@example.com"
           }
        }
    }
    每天努力一点,每天学习一点。 Keep Moving...
  • 相关阅读:
    JS—图片压缩上传(单张)
    vue 使用jssdk分享
    微信JS-SDK选择图片遇到的坑
    手把手教你实现一个微信自动回复机器人
    SSH实现远程控制
    使用Apache服务部署静态网站
    Rhel7安装及网卡、yum、vmtools配置和修改主机名
    基础工具之消息队列、线程池、缓冲区抽象、事件循环和日志实现
    I/O多路复用方案
    Java按字节截取字符串(GBK编码、UTF-8编码实现)
  • 原文地址:https://www.cnblogs.com/channy14/p/9144310.html
Copyright © 2011-2022 走看看