获取Chrome扩展程序中当前页面的网址

时间:2017-01-30 05:10:51

标签: javascript google-chrome-extension

我正在尝试记录为我加载的每个页面发出的所有请求。以下是manifest.jsonbackground.js文件。

manifest.json:

{
  "name": "Requests",
  "version": "1.0",
  "description": "Log Requests",
  "permissions": ["webRequest",
  "webRequestBlocking",
    "tabs",
    "<all_urls>"],
  "background": {
    "scripts": ["background.js"]
  },

  "manifest_version": 2
}

background.js:

var url = ''

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    url = tabs[0].url;
});

chrome.webRequest.onBeforeRequest.addListener(
  function(info) {

    console.log("Request for " + url + ':  --> ' + info.url);
  },
  // filters
  {
    urls: ["<all_urls>"]
  },
  // extraInfoSpec
  ["blocking"]);

我遇到的问题是url内的background.js参数始终包含chrome://extension/,无论我加载哪个页面。我不明白为什么会发生这种情况。我尝试使用window.location给我当前的网址,但那也会返回相同的值。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

所以,这是一个有效的解决方案。我唯一做的就是将chrome.tabs.query方法放在onBeforeRequest的回调中,以便每次收到请求时触发它(因此url也会更新)。

var url = ''

var callbackOnRequest = function(info) {

    chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
        if (tabs[0] != undefined){
                url = tabs[0].url;
            }

    });

    console.log("Request for " + url + ':  --> ' + info.url);
}
var filters = {
    urls: ["<all_urls>"]
};

var extraInfoSpec = ["blocking"];

chrome.webRequest.onBeforeRequest.addListener(callbackOnRequest, filters, extraInfoSpec);

答案 1 :(得分:-2)

您可以通过 background.js

中的chrome.windows.WINDOW_ID_CURRENT函数获取每个请求网址
react-native-webrtc