2011-12-21 3 views
0

Я использую этот запрос AJAX в расширении google chrome; который регистрирует ошибку в хромированной консоли:Javascript switch statement 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 site (and the API) вам необходимо передать объект (который предлагает ошибка), а не просто передать текст.

Из образца:

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

Так, вероятно, вам просто необходимо:

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

Спасибо. Работал! – ACarter

2

Неправильный путь вызвать функцию setBadgeText (http://code.google.com/chrome/extensions/browserAction.html)

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

должен работать. То же самое верно и для setBadgeBackgroundColor.

+0

Спасибо, хотя он отлично работал с цветом фона, как это было. (Возможно, я просто использую значение по умолчанию) – ACarter

2

chrome.browserAction.setBadgeText принимает Object и не String (как указано в сообщении об ошибке). Вот ссылка на documentation. Попробуйте изменить свой код на:

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

Спасибо. Я действительно видел эту страницу, но это меня просто смутило, ... – ACarter