JQuery Nicht Richtig Analysieren attr("href") im IE
Ich habe eine wirklich seltsame Frage, die ich hoffe jemand kann etwas Licht auf. Ich bin mit Jquery, um eine Http-Antwort von einer anderen website (die ich besitze). Einmal erhalte ich den DOM, den ich durchsuchen, um bestimmte Informationen. Jedoch, wenn ich versuche mir das href-Attribut eines link, der IE ist indem die lokale Domäne an den Anfang des href -!
Hier ist mein code:
$.ajax({
type: "POST",
url: "MyPage.aspx/GetWebResponse",
data: "http://myWebSite/pages/AnotherPage.aspx",
contentType: "application/json; charset=utf-8",
dataType: "json",
asynch: false,
success: function(data)
{
var __htmlForMainPage = data.d;
var PageLink = $(__htmlForMainPage).find("a:contains('Get This Link')").attr("href");
}
});
Meine variable PageLink SOLLTE "/pages/getThisPage.aspx?id=8347". Es ist jedoch zurückgegeben wird als "http://myserver/pages/getThisPage.aspx?id=8347".
Dies ist NUR passiert im IE. FireFox ist in Ordnung. Das ist auch nur passiert, wenn ich es auf den server. Wenn ich es lokal funktioniert alles einwandfrei, im IE und FF. Aber wenn ich es auf den server, FF funktioniert immer noch gut, aber IE nicht.
Hat jemand das schon mal gesehen, oder weiß was hier Los ist? Jede Hilfe wird sehr geschätzt!
- Ich weiß nicht, was Los ist, aber ich wäre sehr stark daran zweifeln, dass es ein jQuery Problem. Es gibt keinen code in jQuery nichts zu tun, wie URL-rewriting in einer situation wie dieser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim Zugriff auf die
href
DOM-Eigenschaft einesA
- element im IE wird es wieder der absolute Pfad für die url. Das gleiche gilt fürgetAttribute()
im IE7 und niedriger (da getAttribute war gebrochen, bis zum IE8).http://msdn.microsoft.com/en-us/library/cc848861(VS.85).aspx:
jQuery wird immer Holen Sie die DOM-Eigenschaft, wenn die Namenskonvention ist die gleiche:
Den
name in elem
Teil hier ist zu überprüfen, ob eine DOM-Eigenschaft angegeben wurde. Um dies zu umgehen für den IE8 könnten Sie die Immobilie in groß -.attr("HREF")
- da-DOM-Eigenschaften sind case-Sensitiv. Leider der einzige workaround für IE7 und niedriger ist, führen Sie eine Zeichenfolge ersetzen:Dies ist nicht ein jquery-Problem, es ist ein ie-Macke. Es ist leicht Abhilfe zu schaffen "http://myserver/pages/getThisPage.aspx?id=8347".replace('http://myserver', ").
Das "problem" ist, dass das, was Sie sehen in Ihrem HTML-Quellen ist nicht das, was jQuery "sieht" der Browser DOM-Baum.
Das bedeutet, dass IE meisten wahrscheinlich nur speichert, absolute URLs in die a-Knoten des DOM (während andere Browser nicht, aber das ist nicht wirklich relevant für den browser, denn es kann mit absoluten URLs nur irgendwie, so hat es zu berechnen, diese absolute URL früher oder später).
Nun jQuery nur gibt die gespeicherten Werte in den DOM-Baum.
Wenn Sie diese überprüfen möchten, Holen Sie sich Firebug! Sie können den DOM gibt es (und da IE8 gibt es etwas ähnliches im IE als auch).
Verschiedenen Browsern zurückkehren wird, verschiedene Dinge für den URL-Parametern. Die Normalisierung der URL ist Ihre Aufgabe. Ich habe einen regex verwenden, wie diese:
Du willst also Pfad + query.
Pass zweites Attribut zu getAttribute Funktion:
Mehr hier - http://glennjones.net/2006/02/getattribute-href-bug/