Olaf Schneider: Browserweiche / Featureweiche für abbr-Unterstützung

Hallo,

(Vorabinfo: ich benutze jQuery)

ich greife im Javascriptcode einer Website auf abbr-Elemente zu und manipuliere sie für einen eigenen Tooltip. Da IE6 bekannterweise mit <abbr> nichts anfangen kann, würde ich ihn gerne von der Ausführung dieses Scriptteiles aussperren.

Die alte Variante, wäre eine Auswertung von navigator.userAgent oder der $.browser-Eigenschaften, die ebenfalls auf navigator.userAgent zurückgreifen. Nicht sehr elegant, auch wenn es in den meisten Fällen funktionieren dürfte.

Moderner wäre es natürlich, genau das Feature abzufragen, also so etwas wie „if (document.browserKnowsHowToDealWithAbbrElements) { doSomething(); }“. Das gibt es aber vermutlich nicht. Ich finde es jetzt aber auch nicht so ideal, Eigenschaften wie document.all etc. zu benutzen, die ja mit der Fähigkeit eines Browsers mit abbr umzugehen nicht das geringste zu tun haben.

Wie würdet Ihr das machen?

Gruß
Olaf

P.S.: Ich weiß, dass man mit <span class="abbr"> etc. Workarounds für den IE6 schaffen kann, habe mich aber dagegen entschieden, da das Feature nicht entscheidend für die Nutzbarkeit der Website ist.

  1. Moin Moin!

    Hilft dir http://dean.edwards.name/my/abbr-cadabra.html vielleicht?

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Hallo Alexander,

      Hilft dir http://dean.edwards.name/my/abbr-cadabra.html vielleicht?

      Jein. Selbst, wenn Dean Edwards recht hat und der Code bei expliziter Verwendung eines Namespaces valides xhtml 1.0 ist, möchte ich gerne vermeiden, dass der Validator bei der Seite herumzickt.

      Ich könnte mir aber vorstellen, diesen Effekt durch DOM nachzubauen (es käme zumindest auf einen Test bzw. Recherche an).

      Gruß
      Olaf

      1. Hi,

        Jein. Selbst, wenn Dean Edwards recht hat

        Davon ist auszugehen.

        und der Code bei expliziter Verwendung eines Namespaces valides xhtml 1.0 ist, möchte ich gerne vermeiden, dass der Validator bei der Seite herumzickt.

        Wahlspruch: Nicht fürs Leben, für den Validator coden wir! :->

        Gruß, Cybaer

        --
        Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
        (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  2. Hallo,

    da gibts nen kleinen Trick:

    <html><head>  
    <script>  
    [code lang=javascript]document.createElement("abbr");  
    window.onload = function () {  
     document.getElementsByTagName("abbr").item(0).onmouseover = function () {  
      alert(this.innerText);  
     };  
    };
    

    </script>
    </head>
    <body>
    <abbr>Hello!</abbr>
    </body></html>[/code]

    angelehnt an http://ejohn.org/blog/html5-shiv/

    Mathias

    1. Hi,

      da gibts nen kleinen Trick:

      Great one!

      MfG ChrisB

    2. Hallo Mathias,

      da gibts nen kleinen Trick:

      document.createElement("abbr");

      Das ist ja interessant.

      Lektion 1: Diese Zeile muss, wenn man die jQuery-Methode $(document).ready() benutzt, nicht in derselben stehen, sondern ohne Verzögerung im Script direkt.

      Lektion 2: Die Style-Definitionen mit dem css-Selektor abbr frisst IE6 immer noch nicht.

      Jetzt könnte ich natürlich theoretisch per JavaScript über document.styleSheets alle Stylerules suchen, die abbr matchen, um dann die Definitionen mit style zu setzen, aber dann würde ich eher alle abbr-Elemente für den IE6 per JavaScript durch acronym ersetzen und dort fortfahren …

      Gruß
      Olaf

      1. Hallo,

        Lektion 2: Die Style-Definitionen mit dem css-Selektor abbr frisst IE6 immer noch nicht.

        Doch doch. Zumindest manchmal:

        <script>
        document.createElement("abbr");
        </script>
        <style>
        abbr { color:red; }
        </style>
        <p><abbr>b</abbr>c</p>
        <p>a<abbr>b</abbr>c</p>

        Mathias

        1. Hallo Mathias,

          Hallo,

          Lektion 2: Die Style-Definitionen mit dem css-Selektor abbr frisst IE6 immer noch nicht.

          Doch doch. Zumindest manchmal:

          Oh, oh. Das Wort Manchmal macht mich immer misstrauisch. Es geht bei mir aber tatsächlich (zumindest einmal) im IE6, wenn ich in der html-Datei die externen JavaScripts vor den externen Styles einbinde.

          Gruß
          Olaf