我非常接近完成Chrome扩展程序。我有一两件事要做。其中之一是从内容脚本向后台脚本发送消息。我写了以下内容,但它并不是我想要的。
content.js
var a=document.getElementsByTagName('a');
for (i=0,len=a.length;i<len;i++) {
a[i].addEventListener('contextmenu', function() {
var linkTitle = this.getAttribute('title').trim();
var linkUrl = this.getAttribute('href');
if ((linkTitle != null) && (linkTitle.length > 0)) {
chrome.extension.sendMessage({action:'bookmarkLink', 'title':linkTitle, 'url': linkUrl}, function(msg) {
alert('Messages sent: '+action+' and '+linkTitle+' also '+linkUrl);
});
}
});
};
background.js
chrome.contextMenus.create({'title': 'Add to mySU bookmarks', 'contexts': ['link'], 'onclick': mySUBookmarkLink});
function mySUBookmarkLink(info, tab) {
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action == 'bookmarkLink') {
chrome.storage.sync.set({'title': msg.linkTitle, 'url': msg.linkUrl}, function(msg) {
alert('Saved '+msg.linkTitle+' to bookmarks');
});
}
});
};
我的问题是:
提前谢谢你,
ķ。
答案 0 :(得分:2)
chrome.runtime.sendMessage
和chrome.runtime.onMessage
而不是chrome.extension
。
过去,chrome.extension.sendRequest
和chrome.extension.onRequest
已被弃用,转而采用上述chrome.runtime
API方法。
答案 1 :(得分:0)
它是JSON可序列化的消息传递,其中第一对用于识别,然后是成对的
键:值。
您可以通过调用它的密钥从接收的消息中提取值。
应该是:
alert('Saved '+msg.title+' to bookmarks');
甚至更好:
function mySUBookmarkLink(info, tab) {
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action == 'bookmarkLink') {
var receivedValue = msg.title; //pull it out first, for better overview
chrome.storage.sync.set({'title': msg.title, 'url': msg.url}, function(msg) {
alert('Saved '+receivedValue+' to bookmarks');
});
}
});
};