Kurzbeschreibung <br />In IE6 und 7 wird in einem allgemeinen a-Tag (einem in HTML geschriebenen und über DOM-Operationen in die Seite eingefügten a-Tag) der ursprüngliche Wert von href nicht direkt über a.getAttribute("href") abgerufen, wenn der Wert von href ein relativer Pfad ist. Der ursprüngliche Wert kann jedoch über a.getAttribute("href",2) abgerufen werden. Wenn dieser a-Tag jedoch über innerHTML eingefügt wird, kann der ursprüngliche href-Wert auch über a.getAttribute("href",2) nicht abgerufen werden. Es wird geschätzt, dass IE6 und 7 bei innerHTML='<a href="/haha">test</a>' eine Kompatibilitätsverarbeitung dafür durchführen und einige Dinge hinzufügen werden. Zu diesem Zeitpunkt ist das href von a bei der Anzeige durch outerHTML bereits die vollständige Adresse -_-! Es wird gesagt, dass eine ähnliche Situation im src von img auftreten wird. Code kopieren Der Code lautet wie folgt:<!doctype html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Prüfung</title> </Kopf> <Text> <a id="a" href="" onclick=".getAttribute(\"href\",2)">Test</a> </body> </html> Wenn Sie in IE6 oder 7 darauf klicken, wird ein großes „/haha“ angezeigt! ! ! Ich begann zu vermuten, dass da noch etwas anderes im Gange war. Zu diesem Zeitpunkt habe ich darüber nachgedacht, woher mein a-Tag stammt (stringbasierte JS-Vorlage, innerHTML) … Also habe ich es mit dem folgenden Code simuliert: Code kopieren Der Code lautet wie folgt:<!doctype html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Prüfung</title> </Kopf> <Text> <div id="test"></div> <Skript> document.getElementById("test").innerHTML = '<a id="a" href="/haha" onclick="alert(this.getAttribute(\'href\',2));return false;">test</a>'; </Skript> </body> </html> Nochmals getestet ... bei meiner Schwester ... das Problem ist wieder aufgetreten! Beim tatsächlichen Testen kann nach dem Generieren von a erneut setAttribute("href","/haha",2) und anschließend getAttribute("href",2) "/haha" zurückerhalten. Aber wenn Sie so etwas in einer Vorlage machen möchten, erscheint es Ihnen zu ekelhaft, also geben Sie entschieden auf! Es ist besser, auf Franks Rat zu hören ... Fügen Sie einfach ein Attribut hinzu, um die beiden Linkelemente zu identifizieren, und bleiben Sie nicht in der Routine stecken. Nochmal bohren-_-!: Code kopieren Der Code lautet wie folgt:<!doctype html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <title>Prüfung</title> </Kopf> <Text> <div id="test"></div> <Skript> var test = document.getElementById("test"); var a = document.createElement("a"); var txt = document.createTextNode("test"); ein.href="/haha"; a.onclick=Funktion() { Alarm (dies.getAttribute ('href',2));//"/haha" gibt false zurück; }; a.appendChild(txt); test.appendChild(a); </Skript> </body> </html> Schließlich vermute ich, dass IE6 und 7 beim Einfügen von Knoten über innerHTML eine Art „Fehlertoleranz“-Verarbeitung durchführen, die sie für richtig halten … und dann lag ich falsch … |
<<: Schritte für IDEA zur Integration von Docker zur Realisierung einer Remote-Bereitstellung
>>: Eine kurze Analyse der Unterschiede zwischen Undo, Redo und Binlog in MySQL
Einfaches Beispiel für die Verschönerung von HTML...
Vorwort In diesem Artikel wird erläutert, wie Sie...
Inhaltsverzeichnis Einführung Erstellen eines Nex...
Inhaltsverzeichnis 1. Installieren Sie das Proxy-...
In diesem Artikel wird die spezifische Methode zu...
Inhaltsverzeichnis 1. Installation 2. Verwenden S...
Einführung: Wenn wir MySQL zum Erstellen einer Ta...
Heutzutage werden Registerkarten häufig im Webdes...
In vielen Projekten muss eine Countdown-Funktion ...
Jede Webseite hat eine Adresse, die durch eine UR...
In diesem Artikel wird der spezifische Code für J...
Vorwort Vor Kurzem habe ich begonnen, Robot Frame...
Vorwort Beim Schreiben von Code stoßen wir gelege...
Dieser Artikel stellt die Blue-Green-Bereitstellu...
Inhaltsverzeichnis Was ist ein Auslöser Erstellen...