0

我尝试将 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

4 回答 4

1

要克服这个问题,您必须覆盖默认 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>

(或者)

清单.json

"content_security_polciy:"srcipt-src 'self' https://ajax.googleapis.com, object-src 'self'";

它绝对有效。:)

于 2014-12-17T08:48:39.823 回答
1

当我通过 manifest.json 加载 jQuery 时为我工作:

{
...
  "background": {
    "scripts": ["jquery.min.js", "background.js"]
  },
...
}
于 2012-11-06T09:31:39.673 回答
0

安全原因——扩展比普通的沙盒网页做得更多。出于这个原因,您可能必须使用与扩展一起打包的 jQuery 版本,而不是通过 Internet 加载的版本,尤其是通过 HTTP(与 HTTPS)加载的版本。

于 2012-11-03T14:28:55.173 回答
0

出于安全原因,您不能在 Google Chrome 扩展程序中引用外部 JavaScript 文件。为了解决您的问题,您必须将 jQuery 库嵌入到您的扩展中,然后在您的 background.html 页面中引用它。就像是 :

<html>
  <head>
    <script src='jquery.min.js'></script>
    <!-- ... -->
  </head>
  <body>
    <!-- ... -->
  </body>
</html>
于 2012-11-03T14:29:07.430 回答