Ceci est une suite à my previous question à propos de l'utilisation de XMLHttpRequest()
pour publier sur mon application de bookmarking. Quand je reçois le status 200 OK
je veux indiquer d'une manière ou d'une autre avec un changement dans l'icône d'extension que la demande a été réussie. J'ai créé une autre icône success_icon.png
avec des couleurs inverses et j'essaye de faire la nouvelle icône remplace l'icône originale et s'estompe dans l'icône originale. Je comprends que ce sera dans ma fonction de rappel mais je ne comprends pas comment? Voici mon background.html
. Merci!Comment animer l'icône d'extension chrome dans une fonction de rappel?
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab) {
tabId = tab.id;
tabUrl = tab.url
tabTitle = tab.title
var formData = new FormData();
formData.append("url", tabUrl);
formData.append("title", tabTitle);
formData.append("pitch", "this is a note");
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://ting-1.appspot.com/submithandlertest", true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4) {
if (xhr.status == 200)
console.log("request 200-OK")
else
console.log("Error", xhr.statusText);
}
};
xhr.send(formData);
Mise à jour
code adapté de eduardocereto's answer mais setTimeout
ne fonctionne pas correctement:
if (xhr.readyState == 4 && xhr.status == 200) {
console.log("request 200-OK");
//chrome.browserAction.setIcon({path: '/success_icon.png'});
chrome.browserAction.setBadgeText ({ text: "done" });
function resetBadge() {
setTimeout (chrome.browserAction.setBadgeText({ text: "" }), 10000);
}
resetBadge()
}
icône bien changer est facile, mais « se fondre dans » - non pas tant . Savez-vous comment le faire en javascript pur? – serg
@serg: ok, pouvez-vous me donner des indices sur la façon dont je peux changer l'icône, par exemple pendant quelques secondes, puis revenir à l'icône originale. Parce que je ne comprends pas encore comment je peux faire ça. Je vais essayer de disparaître après ça. Merci! – Zeynel
Notez que le code dans setTimeout dans votre exemple n'est pas retardé. Il est exécuté immédiatement et le retour de cette exécution est exécuté après le délai – Eduardo