Javascript 将info.selectionText的值传递给内容脚本
我正在构建一个Chrome扩展。我有一个函数,该函数作为上下文菜单单击的回调被触发: background.jsJavascript 将info.selectionText的值传递给内容脚本,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在构建一个Chrome扩展。我有一个函数,该函数作为上下文菜单单击的回调被触发: background.js function setTranslation(info, tab) { var parseWord = 'var word = ' + info.selectionText; alert(parseWord); // works here chrome.tabs.executeScript(tab.id, { code: parseWord
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'
});
});
alert(word);
lightbox.js目前只会提醒传递的值:
lightbox.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'
});
});
alert(word);
我正在试图找到一种方法,将选择的值(info.selectionText
)传递给内容脚本(lightbox.js
)。当background.js
中的code
属性的值是一个简单的字符串时,它就会工作。但当我将其与info.selectionText
的值连接时,它会提醒undefined
这是因为动作的异步性吗?
有没有一种方法可以通过调整使其工作,或者我必须使用消息传递?假设info.selectionText是
abc
,请查看注入的代码:var word=abc
。现在您可以看到,这里不是一个字符串,而是一个未定义的变量名
健壮的解决方案是使用JSON.stringify,它将转义嵌入的引号并在字符串周围添加双引号:
var parseWord = 'var word = ' + JSON.stringify(info.selectionText);