Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将消息从contentScript传递到弹出窗口_Javascript_Google Chrome Extension_Message Passing - Fatal编程技术网

Javascript 将消息从contentScript传递到弹出窗口

Javascript 将消息从contentScript传递到弹出窗口,javascript,google-chrome-extension,message-passing,Javascript,Google Chrome Extension,Message Passing,我需要使用我的Chrome扩展名获取当前选项卡的url,并将该url传递给popup.js 我正在向contentScript发送消息: chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { chrome.tabs.sendMessage(tabs[0].id, {result: "getURL"}, function(response) { }); }); 在contentScript中的消息上

我需要使用我的Chrome扩展名获取当前选项卡的url,并将该url传递给popup.js

我正在向contentScript发送消息:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.tabs.sendMessage(tabs[0].id, {result: "getURL"}, function(response) {
  });
});
在contentScript中的消息上,我正在发送响应:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if((request.message == "getURL")){
            alert("hovno");
            sendResponse({url: window.location.href});
        }
    }
); 
然后我在popup.js中收听,并尝试将消息存储在我的url变量中:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        // read `newIconPath` from request and read `tab.id` from sender
        if(request.url){
            url = request.result;
            alert("něco");
        }
    });

然而,contentScript似乎从未收到消息,因为警报从未显示。我遗漏了什么?

听起来您的内容脚本没有运行,这可能是由于多种原因造成的,具体取决于您如何声明/注入它。但是,这里根本不需要内容脚本:只需在query()回调中使用
选项卡[0].url
。另外,请确保您知道异步JS是如何工作的:@wOxxOm-perfect,我使用了chrome.tabs.query及其工作方式。谢谢