我正在构建一个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.js
中code
属性的值是一个简单的字符串时,它起作用。但是当我将其与info.selectionText
的值连接起来时,它会提醒undefined
.
这是因为动作的异步性吗? 有没有办法让它通过调整来工作,或者我必须使用消息传递?
假设info.selectionTextabc
,看看注入的代码:var word = abc
。现在如您所见abc
这里不是一个字符串,而是一个未定义的变量名称!
健壮的解决方案是使用 JSON.stringify,它转义嵌入的引号并在字符串周围添加双引号:
var parseWord = 'var word = ' + JSON.stringify(info.selectionText);