Prosty plugin jQuery: Dynamiczny favicon

Autor: nme · poniedziałek, 12 Kwiecień, 2010 · Brak komentarzy ·

Ten prosty wpis ma za zadanie przybliżyć Wam dwa tematy jednocześnie — jak stworzyć prosty plugin do jQuery oraz jak z poziomu JavaScriptu podmienić obrazek favicon dla strony. Zamierzam przedstawić plugin który właśnie taką czynność wykonuje :)

jQuery chyba nie trzeba przedstawiać. Jest to w mojej opinii najłatwiejsza w użyciu biblioteka czyniąca język JavaScript prostym i wygodnym w użyciu. Co więcej — można ją bardzo łatwo rozszerzać o dodatkową funkcjonalność za pomocą pluginów. Uważam, że warto wiedzieć jak taki plugin można sobie szybko przygotować.

jquery.favicon_replace.js wygląda następująco:

(function($) {
    $.fn.favicon_replace = function(url) {
        $('head link').each(function() {
            if ($(this).attr('rel') == 'shortcut icon') {
                $(this).remove();
            }
        });
        $('<link rel="shortcut icon" href="'+url+'" />')
            .appendTo('head');
        return this;
    };
})(jQuery);

Jak powyższy kod działa: tworzymy closure której jako parametr podajemy strukturę jQuery. Wewnątrz closury definiujemy funkcję, która sprawdza atrybut rel każdego taga typu link wewnątrz head porównując go do shortcut icon. Znaleziony w ten sposób element jest kasowany. Następnie tworzony jest nowy link typu shortcut icon, z nowym url'em. Urla podajemy funkcji jako parametr. Closura w postaci anonimowej funkcji jest wykonywana, a w efekcie jQuery zyskuje nową funkcję. return this; na końcu funkcji umożliwia wywoływanie kolejnych funkcji jQuery.

Zastosowanie tego plugina jest proste — oto przykład:

$(document).favicon_replace('/images/new-favicon.ico');

Warto napomnieć, że favicon wcale nie musi być ikoną. Możecie równie dobrze zaserwować przeglądarce animowanego gifa, nawet z rozszerzeniem ico, który zostanie automatycznie przeskalowany przez przeglądarkę i animowany na pasku adresu :)

Zostaw komentarz