• 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...
  • 相关阅读:
    java中几个常见的Arrays下的类
    java二分查找法的实现过程
    java冒泡排序的实现过程
    java数组中选择排序的实现
    正则表达式
    StringBuilder的使用与总结
    String的几个常用API
    关于API,注释文档以及String
    关于sqlserve2000和sqlserver2005以后版本配置连接池的一些思路
    专题-X教育
  • 原文地址:https://www.cnblogs.com/channy14/p/9144310.html
Copyright © 2020-2023  润新知