Falsche Extraktion von .attr ("href") in IE7 gegen alle anderen Browser?
Kann es wirklich wahr sein, dass die attr("href")
Befehl für einen link behandelt wird, sehr unterschiedlich im IE7 im Vergleich zu allen anderen Browsern?
Sagen wir, ich habe eine Seite bei http://example.com/page.html und ich habe diesen HTML:
<a href="#someAnchor" class="lnkTest">Link text</a>
und das jQuery:
var strHref = $(".lnkTest").attr("href");
Dann im IE7 den Wert der strHref
variable "http://example.com/page.htm#someAnchor"
aber in anderen Browsern wird es "#someAnchor"
.
Ich glaube, dass die zuletzt genannten Fall ist die richtige, so ist es nur ein Fall der IE7 ein "bad boy" oder ist es ein bug in jQuery?
InformationsquelleAutor der Frage EmKay | 2009-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sicherlich nicht einen bug in jQuery sondern Browser' inkonsistente Implementierungen der
.getAttribute('href')
- ich schlage vor, mit nur.get(0).href
für Konsistenz.Scheint, wie Sie Zugriff auf das Attribut text im IE und Mozilla mit
.get(0).getAttribute('href', 2)
wenn Sie nicht wollen, dass die absolute URI. Beachten Sie jedoch, dass dies nicht funktioniert in Opera und ich habe nicht getestet in Safari/Chrome/etwas anderes.Könnte man auch Streifen aus der Domäne oder split auf '#' für
.get(0).href
und verwenden Sie den zweiten Teil der Reihe, vorausgesetzt, es enthält sogar '#' ( check.length
).http://www.glennjones.net/Post/809/getAttributehrefbug.htm
InformationsquelleAutor der Antwort meder omuraliev
Ich glaube, es ist genauso implementiert, die in allen IE 7+.
Benutze ich:
Hoffe, es hilft!
Cheers.
InformationsquelleAutor der Antwort drkloc
Ich einen bug gefunden im Zusammenhang mit diesem Problem: http://bugs.jquery.com/ticket/2747 jQuery implementiert einen workaround für IE7 "bug". Jedoch in jQuery 1.7.1 dieser bug wurde wieder eingeführt.
Ich habe einen neuen bug für 1.7.1: http://bugs.jquery.com/ticket/11129
InformationsquelleAutor der Antwort timing
Benutze ich:
wenn ich alles nach dem letzten "/".
InformationsquelleAutor der Antwort chrwahl
ein anderer Weg ist, um Sie nur ein data-Attribut, anstelle von href
.
InformationsquelleAutor der Antwort Johansrk
Ich landete eine variable per PHP, dann javascript replace () - Methode entfernen Sie es aus der href:
InformationsquelleAutor der Antwort Trevor Lettman
Das problem ist, dass IE7 und IE8 ändern, auch der text. Also ein guter workaround ist zu tun, wie diese
InformationsquelleAutor der Antwort catalinux