我需要从Chrome扩展程序的RSS提要中获取一些数据。我正在尝试使用jQuery来做到这一点。
检查弹出窗口显示:
- 未捕获的引用错误: $ 未定义 - 弹出窗口.js:5
- 拒绝加载脚本"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js",因为它违反了以下内容安全策略指令:"script-src 'self' blob: filesystem: chrome-extension-resource:"。- 弹出窗口.html:1
这是代码:
弹出窗口.js
(function () {
alert("Function running"); //Fired
$(document).ready(function (e) {
$.get("https://fupifarvandet.dk/episodes.rss", function (data) {
$(data).find("item").each(function () {
var el = $(this);
console.log("------------------------");
console.log("title : " + el.find("title").text());
alert(el.find("title").text());
alert("Inside the function"); //Never fired
});
});
});
alert("Function has run"); //Never fired
})();
manifest.json
{
"manifest_version": 2,
"name": "RSS Read test",
"description": "Extension description",
"version": "1.0",
"browser_action": {
"default_icon": "img/icon.png",
"default_popup": "popup.html"
}
}
弹出窗口.html
<!doctype html>
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
</style>
<script src="popup.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js"></script>
</head>
<body>
</body>
</html>
有两种方法可以做到这一点。最简单的方法是将 jQuery 文件包含在扩展文件中。另一种方法是编辑 CSP 以允许从该 URL 加载脚本。我会推荐第一种方法,因为它是您需要担心的与网络相关的事情。
正如BeardFist指出的那样,包括像这样的jQuery文件:
<script src="jquery.js"></script>
确保 jquery.js 与 manifest.json 位于同一文件夹中
而不是:
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js"></script>
并确保在任何其他<script>
命令之前运行此行代码。这解决了问题,我现在能够检索我需要的信息。