2011-12-21 88 views
0

我在google chrome扩展中排除了这个AJAX请求;其中记录一个错误的铬控制台:Javascript switch语句undefined error

 
Uncaught Error: Invalid value for argument 1. Expected 'object' but got 'string'. - extensions/extension_process_bindings.js:66 

chromeHidden.validate - extensions/extension_process_bindings.js:66 

(anonymous function) - extensions/extension_process_bindings.js:622 

xmlhttp.onreadystatechange - popup.html:362 

虽然只有那些错误之一是在我的代码,我认为这是这一部分(即标志了标记线)

var xmlhttp; 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    if (xmlhttp.responseText != 0) 
     { 
     chrome.browserAction.setBadgeText(xmlhttp.responseText); // LINE 362 - FINAL ERROR 
     chrome.browserAction.setBadgeBackgroundColor(255,0,0,255); 
     document.getElementById("alerts").innerHTML = xmlhttp.responseText; 
     } 
    } 
    } 
xmlhttp.open("GET","http://adams-site.x10.mx/checkalerts.php? 

day="+dayname,true); 
xmlhttp.send(); 
} 

回答

4

根据sample from the Chrome extension siteand the API),您需要传递一个对象(错误建议)而不是传递文本。

从样本:

chrome.browserAction.setBadgeText({text:String(i)}); 

所以有可能你只需要:

chrome.browserAction.setBadgeText({text: xmlhttp.responseText }); 
+0

谢谢。工作过一种享受! – ACarter 2011-12-21 11:53:24

2

错误方式调用setBadgeText函数(http://code.google.com/chrome/extensions/browserAction.html

chrome.browserAction.setBadgeText({text: xmlhttp.responseText}); 

应该可以工作。 setBadgeBackgroundColor也是如此。

+0

谢谢,尽管它的背景颜色和以前一样正常工作。 (也许我只是使用默认) – ACarter 2011-12-21 11:42:27

2

chrome.browserAction.setBadgeText需要一个Object,而不是一个String(由您的错误信息所示)。这是一个链接到documentation。尝试将您的代码更改为:

chrome.browserAction.setBadgeText({ 
    text: xmlhttp.responseText 
}); 
+0

谢谢。我曾经看过那个页面,但它让我感到困惑,ojects..strings..integers ... – ACarter 2011-12-21 11:41:14