我正在为Minecraft服务器创建镀铬扩展程序。此扩展的目的是返回服务器的在线状态。我使用JQuery的getJSON函数来解析位于网络服务器上的JSON文件中的状态,当我在浏览器中将其作为实际网页运行时,这很好用但我不能让它在扩展中工作。
的manifest.json
{
"manifest_version": 2,
"name": "CJFreedom",
"description": "Displays the status of the Minecraft server CJFreedom.",
"version": "1.0",
"permissions": [
"https://www.thecjgcjg.com/panel/scripts/stats.php",
"https://www.thecjgcjg.com/",
"https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
popup.html
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="popup.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<img src="header.png" alt="diz iz header" width="300px"> <br/>
<a href="http://www.twitter.com/CJFupdates" target="_blank"><img src="twitter.png" alt="Follow CJFreedom on twitter" width="16px" style="float: right; margin: 5px;"></a>
<p style="float: right;">Follow: </p>
<div id="content">
<p style="float: left;" id="status"> CJFreedom is <span style="color: orange;">?...</span></p> <br />
<p> IP: <b>play.thecjgcjg.com </b></p>
<p> Forum: <b><a href="http://www.thecjgcjg.com/forum/" target="_blank">thecjgcjg.com/forum</a></b></p>
</div>
</body>
</html>
popup.js
$.getJSON("https://www.thecjgcjg.com/panel/scripts/stats.php", function(result){
status = result.status;
if (status == "Offline")
$('#status').html('CJFreedom is <span style="color: red;"><b>Offline</b>.(</span>');
else
$('#status').html('CJFreedom is <span style="color: #3AC400;"><b>Online</b>!</span>');
});
正如您所看到的,当扩展程序正在解析JSON文件时,状态为&#34;?...&#34;,当服务器启动它时,&#34;在线&#34 ;当它崩溃时,离线&#34;离线&#34;。正如我之前提到的,当我在浏览器中将其作为网页运行时,它可以正常工作,但是当我打开扩展程序时,它会停留在&#34;?...&#34;部分,好像它只是忽略了javascript ...
答案 0 :(得分:2)
您可能遇到Content Security Policy的问题,这会阻止加载外部脚本。
您是否尝试过下载jQuery文件并将其作为扩展程序的一部分包含在内,就像任何其他JavaScript文件一样?这在过去对我来说非常合适,并且支持Chrome应用和扩展程序通常首选的“离线优先”模式。这在this page底部的“捆绑”部分中提到:
如果要使用浏览器未提供的库(例如,jQuery),可以将该库的JavaScript文件与扩展名捆绑在一起。捆绑的库在扩展中工作,就像在其他网页中一样。