0
我正在一個非常簡單的瀏覽器擴展,但不能讓消息傳遞工作: 我可以發送消息,但答覆從未交付!Chrome擴展消息傳遞沒有響應
我的代碼: 它主要來自browserActions教程,內容教程(manifest)和消息傳遞API定義。
的manifest.json:
{
"manifest_version":2,
"name": "FUN SCRIPT",
"version": "1",
"description": "THIS IS SOME FUN SCRIPT",
"browser_action": {
"name": "Fun",
"icons": ["icon.png"],
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_scripts": [ {
"js": [ "jquery.js", "background.js" ],
"matches": [ "http://*/*", "https://*/*"]
}],
}
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
popup.js
document.addEventListener('DOMContentLoaded', function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
});
popup.html
<!doctype html>
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
body {
min-width: 357px;
overflow-x: hidden;
}
img {
margin: 5px;
border: 2px solid black;
vertical-align: middle;
width: 75px;
height: 75px;
}
</style>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
我不認爲這是真的,因爲消息被傳遞到內容腳本(並從內容腳本中獲取console.log),但響應不起作用。另外:當我點擊browserAction按鈕時觸發該動作。這是在內容加載後! –
好的,我試了一下,它確實與你提供的一樣。我加載了擴展名,檢查了彈出窗口,並看到「Receiving end does not exist」錯誤。我重新加載了一個頁面來加載內容腳本,然後重新檢查了彈出窗口,並看到了預期的控制檯輸出。 –
非常有趣..我雖然它也應該工作。但我沒有看到響應的控制檯輸出.. –