Włączanie obsługi nieobsługiwanych elementów w IE

Jak powszechnie wiadomo, Internet Explorer, szczególnie w wersji 6 (wciąż popularnej), nie słynie ze zgodnego ze standardami sposobu renderowania stron ;-) Jeśli chodzi o nieobsługiwane elementy, dawać we znaki może się brak obsługi znacznika <abbr/>, odpowiadającego za wyświetlanie skrótu jakiegoś pojęcia, na przykład:

<abbr title="na przykład">np.</abbr>

Internet Explorer traktuje taki zapis mniej więcej tak samo, jakby poddać go działaniu funkcji strip_tags() z PHP. Co to oznacza praktyce? Nie można takiego elementu stylować za pomocą arkusza stylów, a co za tym idzie – nie ma możliwości wykorzystania expressions(). Na szczęście istnieją inne metody rozwiązania tego problemu.

Nie używaj tego wcale

Pewnym sposobem na obejście problemu jest zastosowanie się do wskazówki pochodzącej między innymi z książki W głąb dostępności. Metoda jest prosta: skoro istnieje element o zbliżonej funkcji, ale określający akronimy (<acronym/>), dlaczego więc całkowicie nie zrezygnować z definiowania skrótów na rzecz tego znacznika? Jeśli dbasz o semantyczność swojego kodu, zapewne zauważysz różnicę pomiędzy skrótem a skrótowcem (czyli inaczej akronimem). Na szczęście masz jeszcze inne wyjście.

Zamieniaj elementy w locie

Alternatywnym rozwiązaniem jest stosowanie odpowiednich znaczników, a dla przeglądarek mających problemy z ich interpretacją – wykorzystanie skryptu JavaScript. Pierwsza myśl, jaka przyszła mi do głowy, to napisanie czegoś podobnego do tego, co zostało użyte na stronach słownika PWN (polecam zajrzeć w źródło dowolnie wybranego hasła). Operacje na poziomie DOM, wszystko fajnie, pięknie

Znalazłem jednak o wiele lepsze i wydajniejsze rozwiązanie – bardzo interesujące, moim zdaniem. Rozwiązanie problemu z nieobsługiwanym znacznikiem opiera się na zaledwie jednej linijce kodu:

document.createElement("abbr");

Od tej pory możliwe jest stylowanie elementów za pomocą CSS, wyświetla się także etykietka ekranowa z atrybutu title. Ale i tak wątpliwy pozostaje cel stosowania takich rozwiązań.

Komentarze

  1. brtk pisze:

    Do poprawiania niektórych bugów IE najlepiej użyć skrypt IE7

  2. Wasacz pisze:

    brtk: A nie jest przypadkiem tak, że IE7 obsługuje już abbr? Akurat teraz nie mam jak sprawdzić.

  3. brtk pisze:

    IE7 jako przeglądarka? Tak, ale ja mówię o skrypcie, który nazywa się IE7, bo powstał za czasów IE6 ;-)

  4. Wasacz pisze:

    Tak, wiem, że mowa o skrypcie, chociaż nazwę ma mylącą ;-) Fajne to, oszczędza klepania expressions. Dzięki ;-)

    Edycja: kochamy Textile…

  5. art.stk pisze:

    Jeremy Keith też wspominał o tym niedawno
    Wygląda na to, że ta metoda działa na wszystkie elementy, których IE nie obsługuje.

Dodaj komentarz

Proszę, formatuj komentarz za pomocą Markdown.

Wymagane pola zaznaczone są znakiem gwiazdki – „*


Obrazek z kodem

*