Frage

Ich schreibe gerade eine Website, die mit allen Browsern kompatibel sein muss, einschließlich IE ab Version 6.

Ich habe mich insbesondere über Kompatibilitätsprobleme bei diesen beiden Veranstaltungen gewundert:Ich verwende sie mit einem <input> taggen mit type='text'.

  • OnBlur
  • Bei Änderung

Bei der Suche wurden gemischte Antworten und eine unvollständige Liste gefunden.

Konkret geht es um die Frage:

  • Gibt es bekannte Probleme mit den beiden oben genannten Ereignissen (könnten auf andere HTML-Ereignisse ausgeweitet werden)?
  • Wenn ja, mit welchen Methoden können diese Probleme umgangen werden?

Jede Hilfe wird sehr geschätzt :)

War es hilfreich?

Lösung

Alle Browser sollten diese Ereignisse recht gut unterstützen, wenn Sie sie nur in Textfeldern verwenden.Wenn Sie sich das ansehen Kompatibilitätstabellen für QuirksMode-Ereignisse, werden Sie feststellen, dass IE einige Probleme mit dem Änderungsereignis in Optionsfeldern und Kontrollkästchen hat.

Wenn Sie mit JavaScript-Ereignissen in Browsern nicht sehr vertraut sind, werden Sie feststellen, dass das Ereignismodell aufgrund der Tatsache, dass der IE beschlossen hat, Dinge anders als im Standard zu machen, ein Chaos ist.Um dieses Problem zu überwinden, Sie sollten ein JavaScript-Framework verwenden wie jQuery, YUI, Dojo, MooTools, ExtJS, oder Schließung.Diese Frameworks glätten die Unterschiede, sodass Sie sich (fast) nie mit den Unterschieden und Fehlern in den verschiedenen Browsern auseinandersetzen müssen.Es gibt ein toller Artikel über CodingHorror Erläutert, warum Sie die Verwendung eines JavaScript-Frameworks in Betracht ziehen sollten, wenn Sie JavaScript auf Ihrer Website verwenden möchten. Wenn Sie neugierig sind, sollten Sie die Lektüre lesen Warum Sie sollten ein JavaScript-Framework verwenden.

Auch wenn Sie mit Browser-Ereignissen nicht völlig vertraut sind, stellen Sie sicher, dass Sie sie verstehen Der Unterschied zwischen Onchange und Onblur.

Andere Tipps

Ich glaube, dass es bei diesen beiden spezifischen Ereignissen kein größeres Problem gibt als bei allen Ereignissen im Internet Explorer plus den üblichen seltsamen Macken wie z Dieses hier.

Die allgemeine Lösung für die Ereignisbehandlung und VIELE andere Probleme besteht darin, ein Javascript-Framework zu verwenden, dessen Entwickler ihr eigenes Blut vergossen haben, um Ihres zu retten, und alle IE- (und einige andere) Kuriositäten zu überdecken, wie z Dojo.Wie die Dojo-Leute auf dieser Seite sagen:

Das Wort "Unterstützung" bedeutet für Dojo und Dijit etwas sehr Spezifisches, in diesem Sprichwort, dass Dojo Core und Dijit einen Browser unterstützen, dass 100% der verfügbaren Funktionen funktionieren, dass die Zugänglichkeit korrekt behandelt wird und dass jede Internationalisierung und Lokalisierung unterstützt wird.Das ist ein sehr Hohe Bar, was auch bedeutet, dass wir zwar nicht sagen, dass Browser wie Opera für Dijit "unterstützt" werden, aber es ist sehr wahrscheinlich, dass alles auch dort funktionieren wird, aber es kann einige Einschränkungen geben, die wir nicht herumarbeiten konnten (solches als Barrierefreiheit Hook an der Opera).

Die Browser, die sie auf diesem sehr hohen Niveau als „unterstützt“ bezeichnen, sind (ab Dojo 1.3.2) IE 6 bis 8, Safari 3.1 bis 4, Firefox 2 bis 3.5, Chrome 1 bis 2 (Kernfunktionalität, einschließlich Event). Handhabung, funktioniert auch auf Opera, Konqueror, FF 1.5, ...).

Wenn Sie jQuery verwenden, versuchen Sie Folgendes:

$('input.text').click(function () {
        if (this.value == this.defaultValue) {
            this.value = '';
        }
    });
    $('input.text').blur(function () {
        if (this.value === '') {
            this.value = this.defaultValue;
        }
    });

$("input:text") wenn Sie alle Texteingabefelder als Ziel verwenden möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top