Heim  >  Artikel  >  Web-Frontend  >  Englisch: Ein Link-Tag schließt die Produktion von href_HTML/Xhtml_webpage automatisch ab, z. B

Englisch: Ein Link-Tag schließt die Produktion von href_HTML/Xhtml_webpage automatisch ab, z. B

WBOY
WBOYOriginal
2016-05-16 16:43:401471Durchsuche

英文:A链接标记ie下会自动补全href.
Bei der Arbeit am Ajax Link Tracker und MapSurface bin ich auf eine Inkonsistenz bei der Art und Weise gestoßen, wie das href-Attribut mithilfe von DOM-Scripting abgerufen wird.
Das href-Attribut unterscheidet sich von anderen Elementattributen darin, dass der festgelegte Wert relativ zum Kontext der Seiten-URL sein kann. Wenn Sie einen Link mit einem relativen href-Attribut festlegen
Testseite
Der Browser prüft die aktuelle URL der Seite und leitet eine absolute URL für den Link ab.
http://www.glenn.jones.net/development/test1.html
Das ist die Ursache des Problems. Einige Browser geben den Text des Attributs zurück und andere geben die abgeleitete absolute URL zurück. Die Ergebnisse unterscheiden sich auch je nach der Methode, die Sie zum Abrufen des href-Attributs verwenden. Es gibt drei gängige Möglichkeiten, auf ein Attribut zuzugreifen:
linkobj.href; linkobj[‘href’]; linkobj.getAttribute(‘href’);
Die Methoden linkobj.href und linkobj[‘href’]; für den Zugriff auf das Attribut geben konsistent die abgeleitete absolute URL zurück.
Microsoft hat versucht, dieses Problem zu beheben, indem es Problem einen zweiten Parameter zur getAttribute-Methode hinzugefügt hat. Der zweite Parameter kann auf 0,1 oder 2 gesetzt werden. Wenn der Parameter auf 2 gesetzt ist, gibt die Methode den Attributtext zurück. Bei jeder anderen Einstellung wird die abgeleitete absolute URL zurückgegeben.
linkobj.getAttribute(‘href’); linkobj.getAttribute(‘href’,2); Abgeleitete
Absolute URL Attributtext IE linkobj.href; x IE linkobj.getAttribute(‘href’); x IE linkobj.getAttribute(‘href’,2); x Gecko linkobj.href; x Gecko linkobj.getAttribute(‘href’); x Gecko linkobj.getAttribute(‘href’,2); x Oper linkobj.href; x Oper linkobj.getAttribute(‘href’); x Oper linkobj.getAttribute(‘href’,2); x Attributtestseite abrufen Testen Sie auf IE6, Firefox 1.5 und Opera 8.51.
Was sollte also von der getAttribute-Methode zurückgegeben werden? Die W3C DOM Level 2 Core-Spezifikation, die die Struktur der getAttribute-Methode festlegt, deckt dieses Problem nicht ab. Es ist nicht so, dass einer der beiden Ansätze falsch oder richtig ist. In diesem Punkt ist die Spezifikation offen für Interpretationen.
Als Programmierer möchte ich auf beide Werte zugreifen können. Die DOM Core-Spezifikation sollte aktualisiert werden, um das Problem zu beheben.
Nach einem wirklich guten Austausch mit Jim in den Kommentaren unten muss ich korrigiert werden. Die Spezifikation besagt, dass getAttribute den Attributwert und nicht die absolute URL zurückgeben soll. Der Ansatz von Microsoft ist falsch.
Derzeit verwende ich die Objekteigenschaftenmethode der alten Schule linkobj.href, um abgeleitete absolute URLs zurückzugeben. Es liefert die konsistentesten Ergebnisse in allen Browsern. URLs von Interesse
W3C REC DOM Level 2 Kernspezifikation für getAttribute
Gecko-Dokumentation für getAttribute
Microsoft-Dokumentation für getAttribute
Wie üblich, gerade als ich diesen Beitrag beendete, fand ich diesen Fehlerbericht auf der QuickMode-Site, der dasselbe Thema behandelt.
getAttribute HREF ist immer absolute.html
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn