Testen Sie den folgenden Code (Demo) in den Browsern IE6, IE7, Firefox2+, Firefpx3+, Opera9.6+, Safari3.1+:
<div id = test>
<a href =#> Test </a>
</div>
<div id = result> </div>
<script type = text/javaScript>
(Funktion(){
var test = document.getElementById ('test');
Alert (test.innerhtml);
var result = document.getElementById ('Ergebnis');
result.innerhtml = test.innerhtml;
Alarm (result.innerhtml)
}) ();
</script>
Infolgedessen wird festgestellt, dass der HREF -Wert des A -Elements in Ergebnis.Innerhtml zum zweiten Mal im IE6 aufgetaucht ist und IE7 -Browser zum absoluten Weg.
Tatsächlich haben unsere Vorfahren diese Probleme vor langer Zeit begegnet (dank Yu Bo für die angegebenen Informationen):
Die Verarbeitungslösung wurde im obigen Artikel erwähnt, der die GetArttribut -Methode ('href', 2) unter IE verwenden soll. Microsoft erweitert den zweiten Parameter auf diese Methode, die auf 0, 1, 2 eingestellt werden kann. Wenn auf 2 eingestellt wird, wird der ursprüngliche Wert der Eigenschaft zurückgegeben.
Das Skript ist behoben auf:
(Funktion(){
var test = document.getElementById ('test');
Alert (test.innerhtml);
var result = document.getElementById ('Ergebnis');
result.innerhtml = test.innerhtml;
if (/*@cc_on!@*/0) {// if dh
var links1 = test.getElementsByTagName ('a');
var links2 = result.getElementsByTagName ('a');
für (var i = 0, len = links1.length; i <len; ++ i) {
links2 [i] .reif = links1 [i] .GetAttribute ('href', 2);
}
}
alarm (result.innerhtml);
}) ();
Bei der Suche nach diesem Problem habe ich auch nach einem interessanten Fehler gesucht, der von Hedger Wang gefunden wurde: Wenn der neue HREF -Attributwert in IE zurückgesetzt wird, dann wird der Link -Text http: // oder @enthält, sein Innerhtml wird falsch angezeigt und wird als ein festgelegter HREF -Attribut angezeigt.
Problemumgehung (Shref ist der neue Wert von HREF, der festgelegt wird):
Shref = 'http://www.hedgerwow.com';
var ismsie = /*@cc_on!@* /false;
if (ismsie) {
Shref = '' + Shref; // Fügen Sie vor dem neuen HREF zusätzlichen Platz hinzu
};
Details: "Internet Explorer könnte fälschlicherweise das innere innere Innerhtml zurücksetzen, wenn ein neuer HREF zugewiesen wird"