Javascript Chrome扩展未加载jquery

Javascript Chrome扩展未加载jquery,javascript,google-chrome-extension,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> 它说它拒绝加载脚本的http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js因为它违反了以下内容安全策略指令:“scr

我尝试将jQuery导入我的Chrome扩展,但是当我尝试

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>


它说它
拒绝加载脚本的http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js因为它违反了以下内容安全策略指令:“script src‘self’chrome extension resource:”。
这意味着什么,更重要的是,我该怎么做呢?

出于安全原因--扩展可以做的比普通的沙盒网页多得多。出于这个原因,您可能必须使用扩展名附带的jQuery版本,而不是通过internet加载的版本,尤其是通过HTTP(vs HTTPS)加载的版本。

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

<html>
  <head>
    <script src='jquery.min.js'></script>
    <!-- ... -->
  </head>
  <body>
    <!-- ... -->
  </body>
</html>

在我通过manifest.json加载jQuery时对我有效:

{
...
  "background": {
    "scripts": ["jquery.min.js", "background.js"]
  },
...
}

要克服这个问题,您必须或者必须从本地资源导入JS文件。有时覆盖CSP可能不起作用(不允许HTTP)。因此,我建议您始终从本地导入JS文件。Chrome扩展有一些不使用外部JS的安全准则

只需将jQuery插件保存到本地,然后尝试在html页面中导入。例如,假设您已将jQuery插件保存为本地文件中的“jQuery\u local\u file.js”

<html>
<head>
    <script src="jquery_local_file.js"></script>
</head>
<body>
    //body code here
</body>
</html>

//这里是身体代码
(或)

manifest.json
“内容安全”政策:“srcipt src'self”https://ajax.googleapis.com,对象src'self';


它确实有效。:)

查看我两天前的发言。错误。如果你愿意,你可以这样做。如果你纠正了那句话(以及推翻CSP的限制),我很乐意推翻投票结果你是对的。但在某些情况下,覆盖CSP不起作用。在我的情况下,我遇到了这个问题。因此,我建议使用这种方法。你确实这样做了,但你的回答包含一个错误的陈述:“你不能直接在Chrome扩展名中导入外部文件。“它还复制了fsenart的现有答案。为了使您的答案有用,您可以解释或至少提及CSP可以被覆盖。同意您的看法。我用有用的答案改变了它。