我正在尝试从内容脚本中检索chrome扩展中的当前网址。从搜索来看,听起来像检索当前网址的最佳方式是使用chrome.tabs.query,但这必须从后台页面完成,这就是我试图实现的。
旁注,document.location.href似乎在内容脚本中有效,但我没有看到这个建议作为一种解决方法。是否有使用此问题的担忧?
至于使用chrome.tabs.query,这是我在内容脚本中的功能:
function getWebApiServer() {
console.log(document.location.href);
chrome.runtime.sendMessage({request: 'url'}, function(response) {
console.log(response);
});
}
该功能在浏览器中包含以下日志:
https://host/extension contentscript.js:165
undefined contentscript.js:167
这是我的后台脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request)
chrome.tabs.query({
active: true,
lastFocusedWindow: true
}, function(tabs) {
var tab = tabs[0];
console.log(tab['url']);
sendResponse('Message received');
console.log(sendResponse);
// sendResponse(tab['url']);
});
// sendResponse('Message received');
});
在后台页面中有哪些日志:
对象{request:“url”} event.js:3
https://host/extension event.js:9
function(response){ event.js:11
我可以看到内容脚本没有返回任何内容,但如果我取消注释后台脚本的最后一行,我将在内容脚本中收到“收到消息”响应。
这引出了一个主要问题,为什么我无法在chrome.tabs.query回调中调用sendResponse?