Deutsch: Ein Link-Tag vervollständigt href im IE automatisch

Deutsch: Ein Link-Tag vervollständigt href im IE automatisch 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 Opera linkobj.href; x Opera linkobj.getAttribute('href'); x Opera linkobj.getAttribute('href',2); xAttribut-Testseite abrufen. Test auf IE6, Firefox 1.5 und Opera 8.51.
Was also soll von der Methode getAttribute zurückgegeben werden? Die W3C DOM Level 2 Core-Spezifikation, die die Struktur der Methode getAttribute festlegt, behandelt dieses Problem nicht. Es ist nicht so, dass einer der beiden Ansätze falsch oder richtig wäre. 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 mich korrigieren. In der Spezifikation steht, dass getAttribute den Attributwert zurückgeben soll, nicht die absolute URL. Der Ansatz von Microsoft ist falsch.
Zurzeit verwende ich die altmodische Objekt-Eigenschaftsmethode linkobj.href , um abgeleitete absolute URLs zurückzugeben. Sie liefert die konsistentesten Ergebnisse in allen Browsern. Interessante URLs
W3C REC DOM Level 2 Kernspezifikation für getAttribute
Gecko-Dokumentation für getAttribute
Microsoft-Dokumentation für getAttribute
Wie üblich fand ich, als ich gerade diesen Beitrag fertigstellte, diesen Fehlerbericht auf der QuickMode-Site, in dem dasselbe Thema behandelt wird.
getAttribute HREF ist immer absolute.html

Englisch: Ein Link-Tag vervollständigt href im IE automatisch.
Während ich am Ajax Link Tracker und MapSurface gearbeitet habe, bin ich auf eine Inkonsistenz beim Abrufen des href-Attributs mithilfe von DOM-Scripting gestoßen.
Das href-Attribut unterscheidet sich von anderen Elementattributen darin, dass der Wertesatz relativ zum Kontext der Seiten-URL sein kann. Wenn Sie einen Link mit einem relativen href-Attribut festlegen
<a href="../development/test1.html">Testseite</a>
Der Browser prüft die aktuelle URL der Seite und leitet daraus eine absolute URL für den Link ab.
http://www.glenn.jones.net/development/test1.html
Dies ist die Wurzel des Problems. Einige Browser geben den Text des Attributs zurück, andere die abgeleitete absolute URL. 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']; zum Zugriff auf das Attribut geben durchgängig die abgeleitete absolute URL zurück.
Microsoft hat versucht, dieses Problem zu lösen , indem der Methode getAttribute ein zweiter Parameter hinzugefügt wurde. 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);
Abgeleitet
Absolute URL
Attributtext

<<:  Verwendung der MySQL DATE_FORMAT-Funktion

>>:  So erstellen Sie eine virtuelle Maschine mit Vagrant+VirtualBox

Artikel empfehlen

So verarbeiten Sie lokal dynamisch geladene Bilder in Vue

Finden Sie das Problem Heute bin ich auf ein Prob...

Tutorial zur Konfiguration der kostenlosen MySQL-Installationsversion

In diesem Artikel wird das kostenlose MySQL-Insta...

MySQL 5.7.17 Winx64 Installations- und Konfigurations-Tutorial

Heute habe ich die MySQL-Datenbank erneut auf mei...

So erstellen und implementieren Sie ein Node-Projekt mit Docker

Inhaltsverzeichnis Was ist Docker Clientseitiger ...

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

Detaillierte Erklärung der Destrukturierungszuweisungssyntax in Javascript

Vorwort Die erstmals in ES6 eingeführte „Destruct...

CSS-Beispielcode zur Implementierung von Schiebetüren

Durch die sogenannte Sliding Door-Technologie läs...

Nginx kompiliert nginx - neues Modul hinzufügen

1. Vorhandene Module anzeigen /usr/local/nginx/sb...

Datenbankabfrageoptimierung: Unterabfrageoptimierung

1. Fall Nehmen Sie alle Mitarbeiter, die nicht Fi...

So schreiben Sie eine Node.JS-Version eines Spiels

Inhaltsverzeichnis Überblick Build-Prozess Verwan...

Deutsch: Ein Link-Tag vervollständigt href im IE automatisch

Englisch: Ein Link-Tag vervollständigt href im IE...

Verwenden von JavaScript zum Implementieren von Karusselleffekten

In diesem Artikel wird der spezifische Code für J...

Abkürzung für HTML DOCTYPE

Wenn Ihr DOCTYPE wie folgt ist: Code kopieren Der ...