Browserweiche / Featureweiche für abbr-Unterstützung
- javascript
0 Alexander (HH)0
Olaf Schneider
0 Cybaer
1
molily
0 ChrisB0
Olaf Schneider
0
molily
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.
Moin Moin!
Hilft dir http://dean.edwards.name/my/abbr-cadabra.html vielleicht?
Alexander
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
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
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
Hi,
da gibts nen kleinen Trick:
Great one!
MfG ChrisB
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
Hallo,
Lektion 2: Die Style-Definitionen mit dem css-Selektor
abbrfrisst 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
Hallo Mathias,
Hallo,
Lektion 2: Die Style-Definitionen mit dem css-Selektor
abbrfrisst 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