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.
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?
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).
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%Tags und Links javascript