Chrome扩展程序 - 将chrome.tabs响应从后台页面返回到内容脚本

时间:2016-08-10 00:43:40

标签: javascript jquery google-chrome google-chrome-extension

我正在尝试从内容脚本中检索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?

0 个答案:

没有答案