在Chrome扩展程序中使用JQuery

时间:2014-02-01 17:01:10

标签: javascript jquery json google-chrome google-chrome-extension

我正在为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 ...

1 个答案:

答案 0 :(得分:2)

您可能遇到Content Security Policy的问题,这会阻止加载外部脚本。

您是否尝试过下载jQuery文件并将其作为扩展程序的一部分包含在内,就像任何其他JavaScript文件一样?这在过去对我来说非常合适,并且支持Chrome应用和扩展程序通常首选的“离线优先”模式。这在this page底部的“捆绑”部分中提到:

  

如果要使用浏览器未提供的库(例如,jQuery),可以将该库的JavaScript文件与扩展名捆绑在一起。捆绑的库在扩展中工作,就像在其他网页中一样。