我需要创建一个包含两个按钮的扩展名:Copy和Paste。 “复制”按钮将选择页面上文本输入和文本内容的内容,并将其保存在存储模块中。 “粘贴”按钮会将保存的文本粘贴到输入和文本区域内的另一个页面上,并使用相同的ID。
我设法使用本地sotrage使其工作,但它只保存在同一域上的内容。我试图使用chrome.storage模块来存储和检索数据;我无法使其发挥作用。
请告诉我这个问题的最佳方法是什么?
更新 扩展工作,但有一点点不便:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
storage.get('form_data', function(item) {
sendResponse(item);
});
}
});
这会返回错误:无法发送响应:如果要在侦听器返回后发送响应,则chrome.extension.onMessage侦听器必须返回true。
var form_data;
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
storage.get('form_data', function(item) {
form_data = item;
});
sendResponse(form_data);
}
});
这有效,但我必须调用该函数两次(单击粘贴按钮),我猜第一个返回undefined并在之后获取数据,第二个调用返回存储值。
答案 0 :(得分:0)
我用以下代码解决了这个问题:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request['request_type'] === 'copy') {
storage.clear();
storage.set({'form_data' : request['form_data']});
} else if (request['request_type'] === 'paste') {
storage.get('form_data', function(item) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, item['form_data']);
});
});
}
});