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
Aus verschiedenen Gründen müssen Sie manchmal den...
Inhaltsverzeichnis Vorwort 1. Die Bedeutung der K...
Laden Sie zunächst das Installationspaket von der...
Bevor wir über die CSS-Priorität sprechen, müssen...
So verwenden Sie den MySQL-Autorisierungsbefehl „...
Inhaltsverzeichnis 1. Übersicht 1. Aussagetest er...
Inhaltsverzeichnis Vorwort XA-Protokoll So implem...
1 Tomcat herunterladen und starten Gehen Sie auf ...
Beispielvorgang für nicht festgeschriebenes Lesen...
Ich habe gerade angefangen, Datenbankoperationen ...
Hintergrund Vor einiger Zeit half unser Projektte...
1. Laden Sie die Zip-Archivversion von der offizi...
Wie unten dargestellt: CSS- CodeInhalt in die Zwi...
Inhaltsverzeichnis 1. Nachfrage 2. Lösung 3. Die ...
1. Versuchen Sie, ein einspaltiges statt eines meh...