2013-04-22 44 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

相關問題