我尝试将jQuery导入Chrome扩展程序,但是当我尝试
时<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
它说Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js' because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".
这意味着什么,更重要的是,我将如何解决这个问题?
答案 0 :(得分:1)
当我通过manifest.json加载jQuery时,对我有用:
{
...
"background": {
"scripts": ["jquery.min.js", "background.js"]
},
...
}
答案 1 :(得分:1)
要解决此问题,您必须override the default CSP或者您必须从本地资源导入JS文件。有时覆盖CSP可能不起作用(不允许HTTP)。所以我建议你总是从本地导入JS文件。 Chrome扩展程序有一些不使用外部JS的安全准则。
只需将jQuery插件保存到您的本地并尝试导入您的html页面。例如,假设您已将jQuery插件保存为本地的“jquery_local_file.js”。
<html>
<head>
<script src="jquery_local_file.js"></script>
</head>
<body>
//body code here
</body>
</html>
(OR)
"content_security_polciy:"srcipt-src 'self' https://ajax.googleapis.com, object-src 'self'";
绝对有效。 :)
答案 2 :(得分:0)
安全原因 - 扩展可以比普通的沙盒网页做得更多。出于这个原因,你可能不得不使用你的扩展包装的jQuery版本,而不是通过互联网加载的版本,尤其是通过HTTP加载的(与HTTPS相比)。
答案 3 :(得分:0)
出于安全原因,您无法在Google Chrome扩展程序中引用外部JavaScript文件。为了解决您的问题,您必须在您的扩展中嵌入jQuery库,然后在background.html页面中引用它。类似的东西:
<html>
<head>
<script src='jquery.min.js'></script>
<!-- ... -->
</head>
<body>
<!-- ... -->
</body>
</html>