Wenn ich aus irgendeinem Grund keinen Zugriff auf JQuery habe, führe ich normalerweise die Attributauswahl manuell mit element.hasAttribute
oder element.getAttribute
durch.
Allerdings scheint es hier einige Komplikationen zu geben, da ältere Browser (IE <= 8) hasAttribute
nicht unterstützen. Also, wenn Sie überprüfen möchten, ob ein Element ein bestimmtes Attribut hat, müssen Sie getAttribute
verwenden und den Rückgabewert überprüfen.
if ((element.hasAttribute && element.hasAttribute("foo"))
|| (element.getAttribute("foo") != null))
{
....
}
Dies lässt mich denken, dass es vielleicht am besten ist, hasAttribute
ganz zu vergessen und stattdessen immer getAttribute
zu verwenden. Das Problem ist, dass ich keine konsistente Dokumentation über den Rückgabewert von getAttribute
finden kann. In der Praxis liefert es auf den meisten Browsern null
, wenn das Attribut nicht existiert - aber es könnte auch einen leeren String zurückgeben, da dies gemäß der DOM 3-Spezifikation so sein soll.
Leider hinterlässt die Rückgabe eines leeren Strings uns keine Möglichkeit, zwischen folgendem zu unterscheiden:
und
Also, in der Praxis scheint das am meisten tragbare Vorgehen zu sein, zuerst zu überprüfen, ob der Browser hasAttribute
unterstützt, und falls nicht, getAttribute
zu verwenden - da IE 6-8 getAttribute
implementieren, sodass es null
zurückgibt (anstelle eines leeren Strings), wenn das Attribut nicht vorhanden ist.
Ist das wirklich der beste Weg, dies zu tun? Oder gibt es einen besseren Weg, um plattformübergreifende Attributserkennung in reinem Javascript zu schreiben?