快速摘要
以下代码是名为 popup.js 的文件。它会侦听单击,并向 background.js 发送消息。 Background.js执行另一个脚本,并创建一个变量。
我不知何故需要将此变量传递回popup.js,并在userHasClicked函数内继续。现在我得到的反应是“未定义”,而且无处可去。
var theParent = document.querySelector("#MENY");
theParent.addEventListener("click", userHasClicked, false);
function userHasClicked(e) {
if (e.target !== e.currentTarget) {
var clickedItem = e.target.id;
chrome.runtime.sendMessage({type: "ResponseType", directive: clickedItem}, function(response) {
console.log(response);
this.close();
});
};
e.stopPropagation();
}
例程:
问题:
以下代码是background.js的相关部分。
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
switch (request.type) {
case "ResponseType":
var LoggType = request.directive;
console.log(LoggType)
chrome.tabs.executeScript(null, {
code: 'var LoggType = "'+LoggType+'";'
}, function() {
chrome.tabs.executeScript(null, {file:"content.js"});
});
chrome.runtime.onMessage.addListener(function(req, snd, sndRes) {
if (req.type = "LogIsGenerated") {
var Logg = req.directive;
console.log(Logg);
} sndRes({});
});
if (typeof Logg !== "undefined") {
alert("Feedback from content.js received");
sendResponse({type: "FinalVar", directive: Logg});
}
else {
alert("No feedback received");
sendResponse({});
};
break};
return true;
}
);
content.js 以此行结尾。
chrome.extension.sendMessage({type: "LogIsGenerated", directive: Logg});
Logg是包含我想要添加到剪贴板的文本字符串的变量。
目前,以下代码警告未收到反馈。
chrome.runtime.onMessage.addListener(function(req, snd, sndRes) {
if (req.type = "LogIsGenerated") {
var Logg = req.directive;
console.log(Logg);
} sndRes({});
});
if (typeof Logg !== "undefined") {
alert("Feedback from content.js received");
sendResponse({type: "FinalVar", directive: Logg});
}
else {
alert("No feedback received");
sendResponse({});
};
答案 0 :(得分:0)
Rob W在此处提供了一个解决方案:Background script can write to clipboard in a very simple manner
工作出色。