Javascript 复制和粘贴交叉表Chrome扩展

Javascript 复制和粘贴交叉表Chrome扩展,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在尝试创建一个chrome扩展,它从选项卡a复制一个值并粘贴到选项卡B上。我正在尝试使它工作,但没有收到响应消息。这是我的密码: content-script.js var toCopy = "Copy: I am a String"; document.getElementById('btnCopy').onclick = doCopy; function doCopy(){ chrome.runtime.sendMessage(extId, {text:

我正在尝试创建一个chrome扩展,它从选项卡a复制一个值并粘贴到选项卡B上。我正在尝试使它工作,但没有收到响应消息。这是我的密码:

content-script.js

var toCopy = "Copy: I am a String";
document.getElementById('btnCopy').onclick = doCopy;
 
function doCopy(){
    chrome.runtime.sendMessage(extId, {text: toCopy}, chrome => {
        console.log('Copied ' + toCopy + '!');
    });
}
 
var toPaste = "Get: textCopied";
document.getElementById('btnPaste').onclick = doPaste;
 
function doPaste(){
    chrome.runtime.sendMessage(extId, {text: toPaste}, chrome => {
        console.log('Pasted ' + toPaste + '!');
    });
}
background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if (message.text.substring(0, 5) === "Copy:")
        chrome.storage.sync.set({'textCopied': text.substring(6, text.length)}, function () {
              console.log('saved!');
    });
    else if (message.text.substring(0, 4) === "Get:")
        chrome.storage.sync.get(['textCopied'], function (items) {
              console.log('Here is the copied text from before: ' + items);
    });
}
背景:

我已经在manifest.json上定义了“inject.js”。运行“inject.js”后,它会将一个新文件“file1.js”附加到目标页面的标题中js’有链式函数来替换和重新排序目标页面中的一些字段,它还有‘复制’按钮的功能,我想用它将一个值从运行扩展的选项卡复制到稍后打开的另一个选项卡。 因此,我在“file1.js”中定义了copy函数,而不是在“inject.js”中。如果我在“inject.js”中定义“chrome.storage.sync.set”语句,它工作得很好,但我希望/需要在单击按钮后执行该函数。运行“file1.js”脚本时会出现该按钮(因为在“file1.js”中我创建并附加了复制按钮),所以我认为必须在“file1.js”脚本中定义按钮操作,对吗?或者我可以使用我使用“file1.js”创建的按钮从“inject.js”调用函数吗

答案是:

我刚刚把所有东西都放进了“inject.js”,现在它就像一个符咒一样工作。为帮助我的沃克索姆担保


(有关更多信息,请参阅答案)

您的代码不会发送响应。请参阅中的示例,并相应地使用sendResponse。我知道这一点,但我不想要响应。我想执行'chrome.storage.sync.set',以便保存变量。我不知道您的扩展的工作流程是什么,我不得不猜测,但有一件事是肯定的:您可以在内容脚本中使用chrome.storage,不需要发送消息。好吧,毕竟,“chrome.storage.sync.set”处理的是注入脚本,而不是附加脚本。让我解释得更清楚一点:在manifest.json文件中,content-script.js被定义和加载。加载content-script.js后,我有一个函数可以将另一个脚本附加到页面上,我们称之为“scriptonpage.js”。我可以从scriptonpage.js调用content-script.js中定义的函数吗?或者,当content-script.js从manifest.json加载时,该函数将只被调用一次?请编辑问题以包含此信息,并解释为什么需要额外的DOM页面脚本,因为复制/粘贴剪贴板的任务肯定不需要它。