【问题标题】:insert variable as text in javascript在javascript中将变量作为文本插入
【发布时间】:2012-03-15 17:39:59
【问题描述】:

我想将变量作为文本传递或以某种方式使上述函数起作用:

var title = "Hello World";
chrome.tabs.executeScript(tabId, {code: "var param1='"+title+"'; var param2='value2'; "}, function(){ /*some code*/ });

当我执行上述函数时,它不会将title 传递给param1,它必须将param1 定义为title。因为title 是动态的,它可以是不同的,所以我真的需要知道如何传递我的title 变量。

如果我像这样更改代码:

chrome.tabs.executeScript(tabId, {code: "var param1='Hello World!'; var param2='value2'; "}, function(){ /*some code*/ });

比它更完美

【问题讨论】:

  • tabId 的值是多少?此外,如果您不知道:chrome.tabs.executeScript在内容脚本中工作。
  • 我不确定我是否理解这个问题,你能举例说明你希望从中得到什么输出吗?
  • 以上代码运行良好...但 param1 值未定义..因为它没有通过。
  • @user 不通过,所以不行。在代码中添加alert(location.href),以验证代码是否正确注入,在右侧选项卡中。
  • 它有效...我检查了!但它通过 param1 不设防。如果我像这样更改代码而不是像我想要的那样完美工作: chrome.tabs.executeScript(tabId, {code: "var param1='Hello World'; var param2='value2'; "}, function(){ /*一些代码*/ });

标签: javascript google-chrome-extension


【解决方案1】:

您的title 字符串包含引号、换行符或反斜杠。这些字符必须转义:

var title = 'Your string was here, with a "quote" etc.';

// Escape each special character:
title = title.replace(/[\\"']/g, '\\$&') /* Backslash and quotes */
             .replace(/\n/g, '\\n')      /* Newlines             */
             .replace(/\r/g, '\\r')      /* Carriage returns     */
             .replace(/\t/g, '\\t')      /* Tabs                 */
             .replace(/\b/g, '\\f')      /* Backspace            */
             .replace(/\f/g, '\\b');     /* Form feed            */

chrome.tabs.executeScript(tabId, {code: "var param1='"+title+"'; var param2='value2'; "}, function(){ /*some code*/ })

【讨论】:

  • 我实际上很难解决这个问题,而是使用闭包编译器编译我的代码,只编译空格,然后删除所有换行符。
  • 如果您尝试清理要执行的 JavaScript 代码,此代码可能会为您抛出错误。您可以用空格字符或无字符 ('') 替换换行符、回车符、退格符和换页符
  • @DevinGRhode “清理 JS 代码以执行”?能给我举个例子吗?对于问题所描述的情况,答案永远不会失败。您的输入是有效的字符串吗?例如。在终止字符串文字之前没有未转义的换行符。
  • 我有一个实时扩展更新系统,所以我通过网络获取一个 js 文件,存储在 localStorage 中,然后执行。代码是闭包编译的,每约 500 个字符输出换行符。
  • 如果您正在谷歌搜索并且有我的场景,您需要评估 javascript,请在​​此处查看我的答案:stackoverflow.com/a/13775229/565877
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2017-04-13
相关资源
最近更新 更多