1

我正在尝试制作一个 Chrome 扩展程序,它可以使用 XHR 解析网站上的 json 页面,这样每当页面上的数字发生变化时,我就可以制作一个徽章。我以为我有它,但是当我将它添加到 chrome 时,图标出现但它不会做任何事情......有什么问题?

background.js:(已编辑)

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.create({'url': "http://www.bukkit.org/account/alerts"}, function(tab) {
  });
});
var xhr = new XMLHttpRequest();
xhr.open( 'GET', 'http://www.bukkit.org/.json', true );
xhr.onload = function () {
    var unread = window.JSON.parse( xhr.responseText )._visitor_alertsUnread;
};
xhr.onerror = function () {
};
xhr.send();

if (unread>0){
chrome.browserAction.setBadgeText({text: unread});
chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000"})
}

和我的 manifest.json:

{
   "browser_action": {
      "default_icon": "icon.png"
   },
   "description": "Get Bukkit Alerts",
   "icons": {
      "128": "128.png",
      "16": "16.png",
      "48": "48.png"
   },

   "name": "BukkitAlert",
   "permissions": [ 
      "tabs", 
      "http://www.bukkit.org/*"
   ],
 "background": {
    "scripts": ["background.js"]
  },   "version": "1.0"
}

谢谢!
编辑:现在单击图标打开新选项卡有效,但它表示变量“未读”未定义。

4

1 回答 1

1

颜色必须是字符串。

你写了。

chrome.browserAction.setBadgeBackgroundColor({color: #FF0000})

应该

chrome.browserAction.setBadgeBackgroundColor({color: "#FF0000"})

更新

运行此代码显示 url 中的 JSON 格式存在错误。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.bukkit.org/.json', true);
xhr.onload = function () {
    var unread = window.JSON.parse(xhr.responseText)._visitor_alertsUnread;
    console.log( unread );
};
xhr.onerror = function () {
    console.log( "An error occurred" );
    console.dir(arguments);
};
xhr.send();

始终定义onerror函数,以便您可以通知某人服务器出现错误。

于 2012-07-12T18:29:09.153 回答