2013-04-22 45 views
28

我正在创建图像裁剪控件的Chrome扩展。我popup.html的代码如下:Chrome显示错误为:拒绝执行内嵌脚本,因为内容安全策略

<body> 
      <textarea id="widget_script" style="border:1px solid #ccc;padding:5px;width:600px" rows="5" readonly></textarea> 
      <script type="text/javascript"> 
       var protocol=window.location.protocol; 
       var host= window.location.host; 
       var head=('<div id="wd_id" style="margin-bottom: 20px;"></div> 
       <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></\script> 
       <script type="text/javascript" src="'+protocol+'//'+host+'Image_crop/cropimages/img_crop_widget.js'+'"><\/script> 
       <script type="text/javascript">init_widget()<\/script>'); 
       document.getElementById("widget_script").innerHTML=head; 
      </script> 
    </body> 

变量协议主机采取协议并在浏览器主机从URL。当我试图将其作为Chrome扩展程序集成时,它不起作用。当它完美的作品,它会显示以下代码的textarea:

<div id="wd_id" style="margin-bottom: 20px;"></div> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" src="http://localhost/cropimages/img_crop_widget.js"></script> 
<script type="text/javascript">init_widget()</script> 

我有事情少之类的东西,放置在外部JS文件和JS代码,并调用文件中manifest.json调用它在我的popup.html,但没有工作。

任何人都可以告诉我我做错了什么,或者我应该尝试使其工作吗?

在此先感谢...

+1

您需要将所有的代码在外部文件中。你不能有任何内联代码。 – BeardFist 2013-04-22 15:59:01

回答

56

Chrome extension CSP docs

联JavaScript将不被执行。此限制禁止内联<script>块和内联事件处理程序(例如<button onclick="...">)。

不能在您的扩展HTML如内嵌脚本:

<script>alert("I'm an inline script!");</script> 

<button onclick="alert('I am an inline script, too!')"> 

相反,你必须把你的脚本到一个单独的文件:

<script src="somescript.js"></script> 
+0

如何从html按钮调用“somescript.js”中的“alert”? – zezba9000 2014-09-03 08:44:00

+1

没关系发现:https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#inline_scripts – zezba9000 2014-09-03 08:46:08

相关问题