[Javascript] كيفية تحريك كروم إكستنسيون إيكون في وظيفة رد الاتصال؟


Answers

لقد وصلت إلى هنا للبحث عن طريقة لجذب بعض الانتباه إلى إضافة الإجراء في المتصفح ...

حتى هنا بعض التعليمات البرمجية مفيد لفلاش الشارة:

function flashBadge(message, times, interval) {
    flash();
    function flash() {
        setTimeout(function () {
            if (times == 0) {
                chrome.browserAction.setBadgeText({text: message});
                return;
            }
            if (times % 2 == 0) {
                chrome.browserAction.setBadgeText({text: message});
            } else {
                chrome.browserAction.setBadgeText({text: ""});
            }
            times--;
            flash();
        }, interval);
    }
}
Question

هذه متابعة لسؤالي السابق حول استخدام XMLHttpRequest() للنشر في تطبيق ارتباطك. عندما أتلقى status 200 OK أريد أن أشير بطريقة أو بأخرى إلى تغيير في رمز الإضافة الذي تم بنجاح الطلب. أنا خلقت رمز آخر success_icon.png مع الألوان العكسية وأنا أحاول أن تجعل رمز جديد محل الرمز الأصلي وتتلاشى إلى رمز الأصلي. وأنا أفهم أن هذا سيكون داخل وظيفة رد الاتصال بلدي ولكن أنا لا أفهم كيف؟ وهنا بلدي background.html . شكر!

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);

تحديث

رمز تكييفها من إيدواردوسيريتو في الإجابة ولكن سيتيموت لا يعمل بشكل صحيح:

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()

}