将 info.selectionText 的值传递给内容脚本



我正在构建一个Chrome扩展程序。我有这个函数,它是作为上下文菜单单击的回调触发的:

背景.js

function setTranslation(info, tab) {
var parseWord = 'var word = ' + info.selectionText;
alert(parseWord); // works here
chrome.tabs.executeScript(tab.id, {
code: parseWord 
}, function () {
chrome.tabs.executeScript(tab.id, {
file: 'lightbox.js'
});
});

灯箱.js目前仅提醒传递的值:

灯箱.js

alert(word);

我正在尝试找到一种方法将选择的值(info.selectionText(传递给内容脚本(lightbox.js(。当background.jscode属性的值是一个简单的字符串时,它起作用。但是当我将其与info.selectionText的值连接起来时,它会提醒undefined.

这是因为动作的异步性吗? 有没有办法让它通过调整来工作,或者我必须使用消息传递?

假设info.selectionTextabc,看看注入的代码:var word = abc。现在如您所见abc这里不是一个字符串,而是一个未定义的变量名称!

健壮的解决方案是使用 JSON.stringify,它转义嵌入的引号并在字符串周围添加双引号:

var parseWord = 'var word = ' + JSON.stringify(info.selectionText);

最新更新