bearbeiten
"Welche Art von Code möglicherweise diesen Fehler verursachen könnte?"
Es scheint, dass der Fehler damit zusammenhängt, dass die document.body
nicht verfügbar ist, weil die Seite im strikten Modus ist. Der Modus wird bei bestbuy als Folge der Richtlinie eingetragen:
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
In Bezug auf Internet Explorer die Option chrome=1
schafft eine Google Content Frame (GCF) die Seite zwingen wird im Strict-Modus zu betreiben. comcast.com befindet sich im strikten Modus aufgrund seines Doctype-Headers unter Verwendung von XHTML
.
There are various ways to enter document modes in IE
Das Nettoergebnis der Seite im Strict-Modus ist, dass die Rendering-Oberfläche bei document.documentElement
verfügbar wird. Dieser Code wird von Text und einen Absatz am unteren Rand des Ansichtsbereichs anhängen:
var p = document.createElement("p");
p.innerHTML = "APPEND";
var holder = Element.prototype.appendChild;
holder.apply(document.documentElement, [p]);
Ich habe diese Geige, um dieses Verhalten zu testen: http://jsfiddle.net/LAkQk/
ich zum ersten Mal dieses Verhalten zu testen entschieden mehrere Browser
Läuft ohne Fehler in Chrome, Firefox, Safari und IE8.
Beachten Sie, dass, um diese Geige (oder wirklich) auf ie8 zu testen, müssen Sie /embedded
verwenden und klicken Sie dann auf "Ergebnis".
Also lassen Sie uns mit der Bestätigung beginnen, dass auf diesen Seiten etwas ist, das den Konflikt verursacht.
konnte ich den Fehler mit IE8 auf bestbuy.com wiederholen und zu bestätigen, dass es bei google.com
Allerdings funktioniert, dann ist dies nicht ein Problem mit apply
oder appendChild
pro sagen.Es ist speziell ein Problem mit der document.body
übergeben. Sie können selbst testen diese mit diesem Code bei bestbuy.com:
(function(){
var p = document.createElement("p");
p.innerHTML = "APPEND";
var holder = Element.prototype.appendChild;
var d = document.getElementById("header");
holder.apply(d, [p]);
})()
Vielleicht ist es wegen etwas, an dem Körper angebracht ist, als Ergebnis eines ihrer Plugins. Komisch, funktioniert diese von der Konsole dh bei bestbuy.com
$("body").append('<p>Append!</p>');
ich durch eine Reihe von Plugins angesehen und kann nicht die genaue Codezeile finden, die die Überlastung oder Konflikt verursacht, aber es muss es sein, mehr als wahrscheinlich als Ergebnis des Schnüffelns des Benutzeragenten.
Für mich funktionierte dies auf Bestbuy-Website ohne Probleme in der Konsole. Es ist zwar nicht IE8 aber IE8 Modus in IE10. –
@TomasKirda Ja, versuche es in IE8 mit einer VM und lass es mich wissen, wenn es funktioniert. –
Sorry für die Umleitung der Frage, aber ich verstehe nicht, warum Sie nicht einfach document.body.appendChild (p) verwenden; – 1nfiniti