2016-06-12 60 views
0

我想實現的jQuery在我的Chrome擴展,以包括在我的background.js的firebase.js(這似乎已經不可思議),但Chrome瀏覽器無法執行來自jquery.js內部的代碼。的jQuery在Chrome擴展 - 拒絕內嵌腳本eventhough包括適當

background.js

$.getScript('firebase.js', function() 
{ 
// code depending on firebase.js, jquery is just needed here to include firebase.js 
}); 

popup.html

<html> 
    <head> 
     <script src="jquery-3.0.0.min.js"></script> 
     <script src="firebase.js"></script> 
     <script src="popup.js"></script> 
     <script src="background.js"></script> 
    </head> 
    <body> 
    //stuff happens 
    </body> 
</html> 

manifest.json的

"content_scripts":[ 
    { 
     "js":["jquery-3.0.0.min.js"],  
     "all_frames":true 
} 
], 
"background": { 
    "scripts": ["background.js"], 
    "persistent": true 
    }, 

所以對我來說,看就像它是正確包括在內,但是我得到這個,這是非常奇怪的,因爲它是jQuery庫裏面:

jQuery的3.0.0.min.js:2拒不執行內嵌腳本,因爲它違反以下內容安全政策

是不是有另一種方法如何在background.js中包含Firebase.js?它沒有任何意義,它不起作用,它包含在我的popup.html中。

+0

經驗法則是永遠不會使用''script''標籤內嵌JavaScript代碼來處理您的''.html''文件,而不是創建一個單獨的''.js''文件並使用'src = 「myscript.js」'' – Ismail

+0

你的意思是什麼?我知道內聯腳本不會被執行,我沒有任何內容。 src不是內聯腳本,對吧? – ffritz

+0

問題是,它並不想從裏面的jquery.js執行嵌入式腳本,這是沒有意義的。 – ffritz

回答

1

這個錯誤來自

$.getScript('firebase.js', function() { ... 

jQuery的getScript將在文件中獲取代碼,然後創建一個與代碼作爲其文本<script>元素。這將是內容安全策略禁止的內聯腳本。

如果您想僅包含在background.js你的代碼前一個文件,你可以簡單地說:

"scripts": ["firebase.js", "background.js"], 
在你的manifest.json

+0

非常感謝,現在更清楚了。 – ffritz

相關問題