我正在尝试记录为加载的每个页面所做的所有请求。这里有manifest.json
和background.js
文件。在Chrome扩展中获取当前页面的url
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"]);
我已经是里面background.js
的url
参数总是包含chrome://extension/
不管我加载的页面的问题。我不明白为什么会发生这种情况。我试图使用window.location
给我当前的网址,但那也返回相同的值。任何人都可以请帮忙?
为什么你认为它会改变?你只设置一次'url',并且永远不要改变它。所以,它永远不会改变。 – Makyen
@Makyen谢谢你的答案Makyen。我的理解是每次加载新链接时都会触发'chrome.tabs.query'。我试图通过'chrome.webNavigation.onBeforeNavigate.addListener做到这一点(功能(具体){\t \t URL = details.url; \t \t});'但每次那不是返回正确的URL。你有什么其他的建议? – QPTR
只需将'chrome.tabs.query'方法嵌套到'onBeforeRequest'的'callback'中就行了。我希望这种做法是正确的。 – QPTR