Chrome扩展程序未加载jquery

时间:2012-11-03 14:24:54

标签: javascript google-chrome-extension

我尝试将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:".这意味着什么,更重要的是,我将如何解决这个问题?

4 个答案:

答案 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)

的manifest.json

"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>