Der Internet Explorer zeigt das alt
-Attribut eines Bildes beim Mouseover als Tooltipp an.

Das ist falsch und lästig. Richtig fatal wird dieses Verhalten, wenn man selbst in mühevoller Handarbeit einen Javascript-Tooltip gebaut hat und dieses blöde IE-Teil zusätzlich aufpoppt.
Die Lösung: Beim Mouseover den Wert des alt
-Attributs zwischenspeichern, leeren und beim Mouseout wieder einsetzen. Mit Mootools funktioniert das so:
if(Browser.Engine.trident) { var element = $('meinBild'); var alt = ''; element.addEvents( { 'mouseover': function() { alt = element.get('alt'); element.set('alt', ''); }, 'mouseout': function() { element.set('alt', alt); } }); }
Geht so ähnlich sicher auch mit jQuery und anderen Frameworks. Eine Standalone-Lösung wäre das hier, was ich allerdings nicht getestet habe.
Was ist dieser Browser lästig …
Kommentare (20)
Aranxo ¶
12. August 2008, 16:44 Uhr
Klar kann man das auch mit JavaScript loswerden, aber immer noch einfacher ist, das title-Attribut explizit auf einen Leerstring zu setzen, also mit title="". Steht ja auch in dem von Dir genannten Link zur anderen Methode. Das darin genannten Argumente gegen die Leer-title-Methode kann ich nicht nachvollziehen. Bisher hat es noch in jedem IE funktioniert. Und was ist das zusätzliche "unnötige" Markup schon gegen ein Laden von JQuery und dem zusätzlichen JavaScript-Code sowie dem Nachteil, dass es eben wieder nur bei angeschaltetem JavaScript funktioniert.
Herr Gabriel ¶
12. August 2008, 17:19 Uhr
Anders gesehen, sollte im Crap zwopunknull Zeitalter JS in jedem Browser angeschaltet sein. Sonst wären ja diese ganzen fancy Efekte, die so mühsam von den Programmieren reingefrickelt wurden, für die Katz!
:O
der_Klaus ¶
12. August 2008, 18:38 Uhr
bin auch dafür, dass man einfach title auf leerstring setzt, da dadurch
1) explizit deklariert wird, dass das teil keinen titel hat
2) es ohne JS funktioniert
3) sich browserhersteller nunmal nach der realität richten müssen und die halt ist, dass oft alt statt title verwendet wird/wurde => wenn kein title nimm alt als tooltip. eine andere implementierung zu fordern ist hier schlichtweg blödsinn, da sie für alle die lage nur verschlechtert (nutzer: sieht die hälfte der titel nicht mehr; programmierer: müssen ev. alte projekte umschreiben weil sie's damals nicht besser wussten)
schöne grüße aus AT
Klaus
Peter ¶
12. August 2008, 20:24 Uhr
Ihr wollt wirklich euer HTML dauerhaft umbauen damit es im Internet Explorer besser funktioniert? Baut ihr dann auch so einen kleinen
-Button irgendwo ein?Jörn Zaefferer ¶
12. August 2008, 21:18 Uhr
Das jQuery Tooltip plugin killt das alt-Attribut automatisch. Allerdings fehlt da die Wiederherstellung.
Aranxo ¶
13. August 2008, 00:01 Uhr
Zitat Peter:
Was ist denn Dein JavaScript-Würgaround anderes als eine Optimierung für IE? Es geht doch nur darum, wie man einen Effekt sinnvoller erreicht. Und dafür ist mir der HTML-Code nicht heilig genug, als dass ich mir den Purismus mit einem Haufen JS erkaufen will. Mein Purismus geht eher dahin, dass ich nichts mit JS machen will, was auch anders geht.
Außerdem baue ich auch nichts dauerhaft um, sondern mache das schon immer so, wenn ich keinen Tooltip sehen will. Allerdings achte ich nicht immer drauf. Liegt aber auch daran, dass ich immer öfter eine PHP-Klasse zur Erzeugung des IMG-Elements verwende. Die hängt automatisch ein leeres title-Attribut an, wenn die title-Eigenschaft nicht explizit gesetzt wird. Sollte der Tooltip-Bug in IE 8 oder IE 9 verschwunden und dieser Browser genügend weit verbreitet sein, kann ich das Verhalten der Klasse in meinem Framework ändern, auf allen Websites deployen und das Leertitle-Attribut ist verschwunden.
Aranxo ¶
13. August 2008, 00:38 Uhr
Und nocheins: Der Einbau von title="" ist semantisch ja nichts falsches, wie DER_KLAUS auch schon angedeutet hat. Ich definiere explizit, dass ich keinen title haben will, Weglassen ist nur die implizite Version davon.
Bei Punkt 3 muss ich Klaus aber widersprechen:
Zitat der_Klaus:
Das sehe ich anders, der IE sollte sich schleunigst an den Standard halten. Es ist doch wiedermal so, dass es eine ärgerliche Diskrepanz zwischen IE und allen anderen Browsern gibt, die sich an die Standards halten. Warum also sollten alle anderen auf die Linie gegen den Standard schwenken, nur weil früher (und nicht nur früher!) etliche Wäppdisainer zu faul waren/sind, sich um richtigen Code zu bemühen? Ich sag nur, wer lesen kann (z.B. SelfHTML), ist klar im Vorteil. Es ist nur gerecht, wenn diejenigen, die sich um sauberen Code kümmern, auch entsprechend zukunftssicherer dastehen.
Stephan ¶
13. August 2008, 07:53 Uhr
Diese riesen MooTool etc. Batzen sind unnötig.
1. Browserunterscheidung brauchst du nicht, wenn es wie im IE auch sonst wo klappt. Warum also eine spezielle IE-Lösung wenn es eine kleinere für alle gibt?
img.onmouseover = function(){
this.tAlt = this.alt;
this.alt="";
}
img.onmouseout = function(){
this.alt = this.tAlt;
}
2. Wird das "alt" Attribut nur für Javascript verwendet, reicht es "alt" einmalig am Anfang / beim Starten auszulesen und entsprechend auszuwerten. Danach ist es nutzlos und kann entfernt werden.
cortex ¶
13. August 2008, 08:14 Uhr
Die Diskussion geht imho in die falsche Richtung:
1. Streitereien über Trivialitäten wie diese sind schlichtweg lächerlich. Ihr könnt genauso gut Eure Schw**ze vergleichen; die Flames dürften ein vergleichbares (sorry: Besserwisser-)Niveau haben.
Es wird - Gott sei Dank - immer mehrere Wege geben, sein Ziel zu erreichen; seltsam nur, dass jeder von sich glaubt, den Goldenen gefunden zu haben.
2. Statt die Makel des ollen IE6 prinzipiell zu akzeptieren und damit zu leben, dass nicht jeder User Eure (oft selbstverliebten) Spielereien erleben darf, werden krasse workarounds konstruiert (die oft weitere Probleme mit sich bringen) und mächtige JS-Bibliotheken in die Anwendung gerammt.
Ich frage: wozu? Einerseits wird über die Notwendigkeit gemeckert, den Drecksbrowser immer wieder berücksichtigen zu müssen, andererseits soll ja niemand einen Unterschied in der Anwendung merken. Das ist schizophren - oder ist es einfach nur schön, seinen (s.o.) heraushängen zu lassen?
Sorry für die starken Worte - das musste mal raus. Diese Pseudo-Verwissenschaftlichung jedes HTML-Krümels ist unerträglich. Im Kontrast dazu werden täglich übelste "Homepages" von hochqualifizierten DAUs in Netz gestellt. Während die Jungs Geld verdienen, streitet Ihr noch immer über +/- 0.5 cm.
cx
Peter ¶
13. August 2008, 08:16 Uhr
Zitat Aranxo:
Ein kleine Hackerei, die nur den IE betrifft und nicht für alle Benutzer das HTML verbiegt. Das ist alles andere als eine Optimierung der gesamten Website für einen Browser der’s nicht draufhat, sondern ein spezifischer Notfallplan sozusagen.
Zitat Aranxo:
Tja, mir schon. Ich lasse mir einfach von dem IE nicht mehr in’s Handwerk (HTML) pfuschen. Außerdem, was ist denn hier
? Das sind doch nicht mal 20 Zeilen.Zitat Aranxo:
Nene, absolut nicht falsch. Nur überflüssig. Und Javascript ist im Übrigen auch nichts Unmoralisches.
Zitat Stephan:
Nicht unbedingt. Wenn man eine spezielle Auswahl an Bildern braucht, ist das schon praktisch. Statt
$('meinBild')
kommt dann sowas wie$$('#main div.galerie img')
und schon hat’s sich gelohnt.Zitat Stephan:
Gegenfrage: Warum soll ich irgendein Script auf Browsern ausführen, die’s nicht brauchen? Man repariert doch nichts, was nicht kaputt ist.
Zitat Stephan:
Das ist allerdings richtig. In meinem Fall brauchte ich das
alt
-Attribut noch für etwas anderes, aber normalerweise kann man die tatsächlich gleich alle entfernen.$('meinBild').set('alt', '');
Oder man könnte so auch einen Titel setzen und das Problem auf diese Weise lösen.
$('meinBild').set('title', '');
Peter ¶
13. August 2008, 08:26 Uhr
Zitat cortex:
Ich sehe hier keinen Streit und keine Flames. Das ist eine engagierte Diskussion, nicht mehr.
Zitat cortex:
Ich akzeptiere die Makel des ollen IE6. Jene die mich bezahlen tun dies nicht. So einfach ist das.
Und ich darf bei meinen Lesern durchaus erwarten, dass sie Verstand genug haben, für so etwas nicht extra eine JS-Bibliothek einzubauen, sondern das nutzen, was sich von Fall zu Fall anbietet.
Zitat cortex:
Warum soll man nicht auf eine ideale Welt hinarbeiten und gleichzeitig Realpolitik machen können?
Zitat cortex:
Du musst dir das hier alles durchlesen.
Stephan ¶
13. August 2008, 08:45 Uhr
@Peter:Gegenfrage: Warum soll ich irgendein Script auf Browsern ausführen, die’s nicht brauchen? Man repariert doch nichts, was nicht kaputt ist.
Machst du doch auch schon mit der Abfrage der Browserversion.
Ich hab für mich entdeckt, das es keine Vorteile bringt direkt auf die Browser einzugehen, nur mehr unbezahlter Aufwand für mich. Besser eine allgemein gültige Lösung und wenn das nicht reicht mit try & catch in Richtung try & error gehen.
@Cortex: glaub mir, so lange MS nicht ein attraktives OS für die Wirtschaft anbietet, wird dort zu 98% der IE6 genutzt. Die Wirtschaft liebt den IE6, der Feierabendrechner zu hause interessiert keinen.
cortex ¶
13. August 2008, 09:05 Uhr
Zitat Peter:
Die deutsche Sprache kennt viele Bezeichnungen für eine Situationen. Davon abgesehen habe ich das Gefühl, Du fühlst Dich persönlich angegriffen...
Zitat Peter:
hier war auch von jQuery die Rede - so what?!
Zitat Peter:
Du klingst gerade selbst wie ein Politiker. Für die ist auch immer alles i.O.
Zitat Peter:
Die Anmerkung verstehe ich nicht. Ich lese übrigens sehr viel - jeden Tag - meistens gründlich. Meine Kritik ist prinzipieller Natur; was mir anstickt, habe ich ja bereits gesagt.
Weisst Du Peter, das Ganze erinnert mich an die vielen Diskussionen sogenannter "Experten" über XSS: wie schlimm das ist, wie verwundbar web-Anwendungen sind etc. Tausende kleiner PanicPanther schreiben das ab und treten es im Netz breit - Verunsicherung.
Kaum jemand spricht darüber, wer TATSÄCHLICH verwundbar ist, welche krassen Voraussetzungen erforderlich sind, ein XSS zu ermöglichen. Anders gesagt: wer ist so naiv, einem User (freien) Zugriff auf das Markup einer website zu gewähren? Ok - das ist OffTopic.
Es werden zu viele Dinge ganz einfach unreflektiert nachgequatscht und hochstilisiert - das ist der Punkt.
Einem kritischen Menschen wie Dir dürfte dieses Problem ebenfalls nicht entgangen sein.
cx
cortex ¶
13. August 2008, 09:20 Uhr
Zitat Stephan:
Wenn man das Thema so abgeklärt und streng wirtschaftlich betrachtet, kann man sich auch das Einpflegen diverser Spielereien sparen, deren Motivation häufig NICHT Kundenseitig ist - siehe oben. Um beim Thema des Artikels zu bleiben: Glaubst Du tatsächlich, dass es irgendjemand Deiner 98% stört bzw. überhaupt realisiert, DASS und vor allem WAS an irgendeiner Stelle hochpoppt oder nicht?
cx
Stephan ¶
13. August 2008, 10:14 Uhr
Zitat cortex:
Du ahnst nicht wie oft und wie "Ideenreich" irgendwelche Abteilungsleiter aus ihren Urlaub kommen (sieh hätten da was auf der Airline-Seite gesehen und so ...), oder mit welchen leuchtenden Augen potentielle Kunden als Orientierungshilfe auf mit Javascript und Flash vollgepackte Seiten verweisen ... die hälfte der Zeit bin ich damit beschäftigt diese Leute wieder runterzuholen und festzuhalten.
Stephan ¶
13. August 2008, 10:39 Uhr
Es ist nicht verkehrt Javascript einzusetzen. Es bietet immer mehr die Möglichkeit Mechanismen zu entwickeln die sonst proprietären Lösungen vorbehalten waren. Objektorientierung im Browser ist eine verdammt tolle Sache, und doch immer noch zu wenig ausgereift.
Es geht ebend gerade auch durch Javascript alles in Richtung Sofwareentwicklung bei der Website-Entwicklung. Dieser Trend ist da und das sogar Browserunabhängig. Ein Indiz dafür ist, das immer öfter klassische Probleme der Softwareentwicklung auftauchen.
Ich denke auch, das der normale Browser (egal ob IE, FF, SF,...) immer seltener diesen wachsenden und neuen Ansprüchen gerecht wird. Anstatt "history.back()" wäre z.B. auf vielen Seiten eine "undo()" Funktion viel besser, das initialisieren von Seiten muss viel besser kontrolliert und gesteuert werden können, ...
großes Thema.
cortex ¶
13. August 2008, 10:52 Uhr
Zitat Stephan:
Stimmt. Habe jetzt auch ein wenig den Faden verloren und verspüre keine Lust, das Thema weiter auszudehnen - sonst lande ich selbst genau da, wo die Geschichte heut Vormittag angefangen hat ,-
cx
Peter ¶
13. August 2008, 13:56 Uhr
Zitat cortex:
Da ich in diesem Fall vom Kunden ausdrücklich darauf hingewiesen wurde dass da ungefragt etwas was aufpoppt … da würde ich schon sagen, dass ich das glaube. Und selbst wenn dem nicht so wäre, ich liefere runde und saubere Arbeit und mache alles so gut wie ich es kann. Wenn das bei dir anders ist und du meinst, man kann da einfach irgendwelche Sachen unbearbeitet liegen lassen, dann, naja, ist das dein Bier. Aber ich glaube nicht, dass das eine Einstellung ist, die so besonders viel Zuspruch finden wird.
SonicHedgehog ¶
26. August 2008, 10:49 Uhr
Hmm, halte title="" auch für gescheiter - sorry - aber jedermanns eigene Sache.
Der IE ist doch sowieso blöd. :-P
Bezüglich allgemeinen JavaScript: Ich mag JS. Und es ist eigentlich auch schon überall aktiviert. Nur leider wird JS wieder etwas "weniger aktiviert" wegen der Fx-Extension "NoScript". Christian (hackthenet.de - hoffe mal keine Werbung) hat mal nen guten Artikel drüber geschrieben; das JS dauerhaft deaktiviert ist, scheint auch mir nicht ganz logisch, für was soll das gut sein? Ich bin noch nie über eine Webseite gestolpert, die bösartigen Code ausführt. Und wenn es einmal passiert, dann besuche ich die Seite nicht mehr oder ich verwende NoScript "umgekehrt": Ich blocke nun den JS-Code dieser Seite.
Wobei: Wenn diese Seite bösartigen JS-Code ausführt, habe ich auch keine Lust mehr auf deren Content/Inhalt.
Brigitte ¶
17. November 2008, 08:35 Uhr
Habt ihr schon enmal
title=""
im IE7 ausprobiert? Der generiert ein leeres Kästchen... Auch nicht schön.Gibt es seine Möglichkeit ohne JS und barrrierefrei den Tooltip im IE7 zu unterdrücken?