Javascript 将消息从contentScript传递到弹出窗口
我需要使用我的Chrome扩展名获取当前选项卡的url,并将该url传递给popup.js 我正在向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.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及其工作方式。谢谢