Tôi đang viết một plugin Chrome có tập lệnh nội dung và tập lệnh nền và tôi đang cố gắng làm cho hai giao tiếp trở nên phổ biến.chrome.runtime.sendMessage không hoạt động như mong đợi
Trong kịch bản nội dung của tôi, tôi đang làm
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
và trong kịch bản nền của tôi, tôi đang làm
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"});
}
);
vẻ biểu hiện của tôi như thế này:
{
"manifest_version": 2,
"name": "Tesing Phase",
"version": "1.0",
"background": {
"persistent": false,
"scripts": ["bgscript.js"]
},
"content_scripts": [{
"js": ["contentscript.js"],
"all_frames": true,
"run_at" : "document_start",
"matches": ["*://*/*"]
}],
"web_accessible_resources": ["script.js"]
}
Khi tôi chạy plugin của tôi, tôi nhận được lỗi sau:
Uncaught TypeError: Object #<Object> has no method 'sendMessage'
Tôi đã thử đăng nhập chrome.runtime
và không có phương pháp sendMessage
. Tôi đang sử dụng phiên bản 25.0 của Chromium trên Ubuntu. Tôi đã thử sử dụng sendRequest
là tốt, nhưng nó nói nó bị khấu hao và sendMessage
nên được sử dụng.
Có ai có thể chỉ cho tôi biết những gì tôi đang thiếu ở đây không? Có bất kỳ quyền nào cần thiết cho việc này để hoạt động không?
Cảm ơn lot.It làm việc sử dụng chrome.extension.I mỏng k thông tin này bị thiếu trong trang google chrome dev. –
điều này có vẻ tuyệt vời, nhưng phương pháp này vẫn còn hợp lệ cho phiên bản chrome lên đến 31? hoặc nó sẽ cần phải được điều chỉnh? và không ai biết liệu phương pháp truyền thông báo cũ không được chấp nhận đã bị xóa hoàn toàn khỏi phiên bản mới nhất của chrome – user280109
@ user280109 Nó vẫn hợp lệ hay không. Mặc dù bạn cũng có thể chỉ sử dụng 'chrome.runtime.' mà không có bất kỳ lớp tương thích nào, bởi vì hầu như không ai sử dụng Chrome 25 nữa nhờ vào trình cập nhật tự động của Google. –