Cross-Browser-Attributauswahl in reinem Javascript

9

Wenn ich aus irgendeinem Grund keinen Zugriff auf JQuery habe, führe ich die Attributauswahl normalerweise manuell mit element.hasAttribute oder element.getAttribute durch.

Es scheint jedoch einige Komplikationen zu geben, da ältere Browser (IE & lt; = 8) hasAttribute nicht unterstützen. Wenn Sie also prüfen möchten, ob ein Element ein bestimmtes Attribut hat, müssen Sie getAttribute verwenden und den Rückgabewert überprüfen.

%Vor%

Das lässt mich denken, dass Sie auch% hasAttribute einfach vergessen und einfach immer getAttribute verwenden können. Das Problem ist, dass ich keine konsistente Dokumentation zum Rückgabewert von getAttribute finden kann. In der Praxis gibt es null in den meisten Browsern zurück, wenn das Attribut nicht existiert. Es kann aber auch zurückgegeben werden leere Zeichenfolge , da dies gemäß der DOM 3-Spezifikation erfolgen soll.

Leider gibt uns die Rückgabe eines leeren Strings keine Möglichkeit zur Klärung zwischen:

%Vor%

und

%Vor%

In der Praxis scheint es am tragbarsten zu sein, zuerst zu überprüfen, ob der Browser hasAttribute unterstützt, und wenn nicht, getAttribute zu verwenden - seit IE 6-8 getAttribute implementieren, so dass er zurückkehrt null (anstelle einer leeren Zeichenfolge), wenn das Attribut nicht existiert.

Ist das wirklich der beste Weg, dies zu tun? Oder gibt es eine bessere Möglichkeit, Cross-Browser-Attributerkennung in reinem Javascript zu schreiben?

    
Channel72 14.06.2013, 16:41
quelle

2 Antworten

1

Das Folgende funktioniert gut in IE6-10 (getestet in IETester), Firefox, Chrome und Safari:

%Vor%

Hier sind jsfiddle und die eigenständige Ergebnisseite (zum Testen in älteren Browsern).

    
Stano 14.06.2013 20:40
quelle
0

Dies wird wahrscheinlich einige Tests erfordern, aber würde sich die Länge der Zeichenkette , die das Element beschreibt, nicht ändern, wenn Sie versucht haben, ein Attribut setAttribute zu setzen Es hat nicht bereits vs bleiben die gleichen, wenn Sie für einen es versucht hat?

%Vor%     
Paul S. 14.06.2013 17:05
quelle

Tags und Links