Underscore.js _.template导致Chrome扩展程序出错

djm*_*ick 17 javascript google-chrome-extension underscore.js

如果我在Google Chrome扩展程序中使用underscore.js_.template(),我会在控制台中收到以下错误:

未捕获的错误:对于此上下文不允许从字符串生成代码

有没有办法克服这个错误?

djm*_*ick 7

非常感谢Chromium列表贡献者指出,以Function下划线方式创建对象需要包含'unsafe-eval' 的manifest.json选项content_security_policy.

举个例子,你manifest.json可以

{
  "manifest_version": 2,
  ...
  "content_security_policy": "script-src 'self' 'unsafe-eval'",
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后下划线行为将起作用,因为此策略允许它.有关格式的详细信息,请参阅该选项的浏览器文档在这里.

  • 谢啦!我还发现在chrome扩展v2 unsafe-eval目前不起作用.有一个关于接受不安全评估或在此处禁用它的讨论(当前的问题状态是wontfix):http://code.google.com/p/chromium/issues/detail?id = 107538 (3认同)
  • 这是一个向manifest.json添加unsafe-eval的示例:https://github.com/djmccormick/linkswapp-chrome/blob/master/manifest.json (2认同)

And*_*own 5

不幸的是,我不认为你可以在chrome扩展中使用underscore.js的_.template()...至少使用新的manifest.json版本2.尝试使用jQuery Template插件也是如此.

在Google Chrome扩展程序的内容安全政策页面中:

没有放松对执行内联JavaScript的限制的机制.特别是,设置包含unsafe-inline的脚本策略将不起作用.这是故意的.

我将看看其他模板引擎,希望不使用新的Function对象.