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

标签 javascript google-chrome google-chrome-extension

我正在构建一个 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'
        });
    });

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

lightbox.js

alert(word);

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

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

最佳答案

假设info.selectionText是abc,看看注入(inject)的代码:var word = abc。现在你可以看到这里的abc不是一个字符串,而是一个 undefined variable 名!

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

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

关于javascript - 将 info.selectionText 的值传递给内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400486/

相关文章:

javascript - 如何清除 Canvas 但保留填充?

javascript - 如何从 Chrome 扩展程序发送更长的电子邮件?

javascript - document.write 到当前 HTML 页面

javascript - 使用正则表达式解析 url,模式与可选字符串不匹配

javascript - 同步 Canvas 绘图/阅读

javascript - 谷歌浏览器扩展程序

javascript - 如何从注入(inject)的内容脚本中传递异步操作的结果?

javascript - Chrome扩展程序权限(读取网站中的数据)?

javascript - 在传单标记弹出窗口中使用 <script>

flash - 固定位置在 Chrome 中损坏,后面有 Flash