1. 程式人生 > >js:瀏覽器插件

js:瀏覽器插件

end ren res doc AS esc In runtime turn

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 + "\n"; });

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
}

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 + "\n";
});

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": "[email protected]"
       }
    }
}

js:瀏覽器插件