Tôi biết rằng câu hỏi đó đã được hỏi nhiều lần theo nhiều cách khác nhau, nhưng tôi đã cố gắng xem qua tất cả các câu trả lời (hy vọng rằng tôi không bỏ sót ai) và không có câu nào phù hợp với tôi.
Đây là mã của tiện ích mở rộng của tôi:
rõ ràng:
{
"name": "test",
"version": "1.1",
"background":
{
"scripts": ["contextMenus.js"]
},
"permissions": ["tabs", "<all_urls>", "contextMenus"],
"content_scripts" : [
{
"matches" : [ "http://*/*" ],
"js": ["jquery-1.8.3.js", "jquery-ui.js"],
"css": [ "jquery-ui.css" ],
"js": ["openDialog.js"]
}
],
"manifest_version": 2
}
contextMenus.js
function onClickHandler(info, tab) {
if (info.menuItemId == "line1"){
alert("You have selected: " + info.selectionText);
chrome.extension.sendMessage({action:'open_dialog_box'}, function(){});
alert("Req sent?");
}
}
chrome.contextMenus.onClicked.addListener(onClickHandler);
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({"id": "line1", "type": "normal", "title": "I'm line 1", "contexts":["selection"]});
});
openDialog.js
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action == 'open_dialog_box') {
alert("Message recieved!");
}
});
Hai cảnh báo của trang nền hoạt động, trong khi một của content_script thì không.
thông báo của bảng điều khiển log: Lỗi cổng: Không thể thiết lập kết nối. Kết thúc nhận không tồn tại.
Lỗi của tôi ở đâu?
chrome.tabs.sendMessage()
để gửi tin nhắn đến các kịch bản nội dung, không phảichrome.extension.sendMessage()
.