有点新手试图在这里创建我的第一个Chrome扩展程序。 我已经验证了我的JQuery和html代码是通过在浏览器中打开它来调用.JS文件的正常.html文件来运行它。
但是,具有相同代码的Chrome扩展程序无法运行,似乎是由于CSP问题。 (我通过https在我的html中调用ajax库)
Refused to load the script
'http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111307901595502626151_1438751974832&_=1438751974833'
because it violates the following Content Security Policy directive:
"script-src'self' https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js". send @ library.js:5
我已经使用我认为必要的最后一件事修改了我的manifest.json文件,包括:
{"content_security_policy": "script-src 'self' https://ajax.googleapis.com/*; object-src 'self'"},
"permissions": [
"http://www.reddit.com/r/abandonedporn/.json?jsonp=?",
"http://www.reddit.com/*", "https://www.reddit.com/*",
"http://www.reddit.com/r/abandonedporn/",
"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js/",
"http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111309090442832093686_1438671168851&_=1438671168852",
"http://*/*", "https://*/*",
"http://reddit.com/json*",
"http://www.reddit.com/r/abandonedporn/*"],
和
"content_scripts": [
{
"matches": [
"https://www.google.com/*",
"http://www.reddit.com/abandonedporn/*"
],
"js": [
"src/inject/inject.js",
"src/content.js",
"src/override/get_pics.js",
"src/override/get_pics2.js",
"src/override/library.js"
]
}
]
}
最后,我的实际Jquery脚本: (请注意,将“.getJSON”更改为“.getScript”没有帮助。)
document.addEventListener('DOMContentLoaded', function () {
$.getJSON("http://www.reddit.com/r/abandonedporn/.json?jsonp=?", function(data) {
$.each(data.data.children, function(i,item){
$("<img/>").attr("src", item.data.url).appendTo("#images");
});
});
});
答案 0 :(得分:0)
根据谷歌的新CSP,您无法在Chrome扩展程序中加载外部(CDN)脚本文件。您需要打包所有资源,下载jquery并从您的包中访问。 “jquery.min.js”而不是CDN-URL / jquery.min.js。这是detail