3

我希望我的Chrome扩展程序的弹出页面显示一个Google Chart,显示有关用户新闻阅读习惯的信息。我注意到(特别是在这里:Chrome extension doesn't work),与此相关的一个问题是,Chrome扩展程序不允许内联脚本,这会使包括使用Google图表所需的API文件变得复杂。有没有解决的办法?有什么地方可以下载整个API来简单地包含在我的扩展中?Chrome扩展程序弹出式菜单中的Google图表?

+0

是不是这个[answer](http://stackoverflow.com/questions/10799257/chrome-extension-doesnt-work#comment14051301_10799671)不够好? – 2013-03-11 23:33:16

+0

我希望得到更多的细节,或者可能的替代方案。您会注意到我在原帖中链接了该主题,并且没有提供太多答案 - 如果没有更多答案,我想知道。 – Zhankfor 2013-03-11 23:59:36

+0

**没有办法放宽这个限制。**看起来像是对我的明确答案。 – 2013-03-12 01:47:36

回答

1

如果文档位于Chrome扩展程序的上下文中,因为它违反了内嵌JavaScript规则,所以无法使用Google图表。但是,您可以将iframe放入引用远程资源的扩展的弹出窗口中。例如,如果下面的代码片段是在你的弹出:

<iframe src="https://mycoolextension.com/user/12345"></iframe> 

然后你就可以拥有使用可在地址https://mycoolextension.com/user/12345谷歌图表的应用程序。如果要将图表与扩展的数据集成,则需要将参数添加到图表iframe的地址,或者实现内容脚本以将值传递到iframe。

2

原则上,扩展可以使用违反CSP的库。但是,这需要额外的箍跳:Sandboxing

"sandbox": { 
    "pages": [ 
     "sandbox.html" 
    ] 
    "content_security_policy": 
     "sandbox allow-scripts; script-src 'self' 'unsafe-eval' https://www.google.com/jsapi" 
    ], 

它是专门为解决此问题而创建的。有关实施细节,请参阅"Using eval in Chrome Extensions. Safely."指南。

由于沙盒页面没有Chrome API访问权限,因此您需要在普通脚本和沙箱之间传递结果。

相关问题