Heim > Web-Frontend > js-Tutorial > Zusammenfassung der JavaScript-Browserkompatibilität und allgemeine Browserkompatibilitätsanalyse_Javascript-Kenntnisse

Zusammenfassung der JavaScript-Browserkompatibilität und allgemeine Browserkompatibilitätsanalyse_Javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 15:07:24
Original
1590 Leute haben es durchsucht

Dieser Artikel ist eine tägliche Zusammenstellung des Herausgebers von Script House über JS-Kompatibilitätsprobleme und Kompatibilitätsanalysen häufig verwendeter Browser wie IE und Firefox. Freunde, die an Kenntnissen über JS-Browserkompatibilität interessiert sind, sollten gemeinsam lernen!

1. Kinder und ChildNodes

Das Verhalten von Kindern, vom IE bereitgestellten ChildNodes und ChildNodes unter Firefox unterscheidet sich. Zum Beispiel:

<div id="dd">
<div>yizhu2000</div>
</div> 
Nach dem Login kopieren

Das Div mit d als dd wird mit childNodes unter IE angezeigt. Die Anzahl der untergeordneten Knoten beträgt 1, während es unter ff drei sind. Aus dem Dom-Viewer von Firefox können wir ersehen, dass seine childNodes ["n", div , "N"].

Um das Kinderattribut in Firefox zu simulieren, können wir Folgendes tun:

if (typeof(HTMLElement) != "undefined" && !window.opera) {
HTMLElement.prototype.__defineGetter__("children", function() {
for (var a = [], j = 0, n, i = 0; i < this.childNodes.length; i++) {
n = this.childNodes[i];
if (n.nodeType == 1) {
a[j++] = n;
if (n.name) {
if (!a[n.name])
a[n.name] = [];
a[n.name][a[n.name].length] = n;
}
if (n.id)
a[n.id] = n;
}
}
return a;
});
} 
Nach dem Login kopieren

2. Vorfälle von Firefox und IE

window.event kann nur unter IE verwendet werden, nicht jedoch unter Firefox. Dies liegt daran, dass das Ereignis von Firefox nur an der Stelle verwendet werden kann, an der das Ereignis auftritt. Firefox muss zur Parameterübergabe Ereignisse aus der Quelle hinzufügen. IE ignoriert diesen Parameter und verwendet window.event, um das Ereignis zu lesen.

So ermitteln Sie beispielsweise die Mausposition unter IE:

<button onclick="onClick()" >获得鼠标点击横坐标</button>
<script type="text/javascript">
function onclick(){
alert(event.clientX);
}
</script> 
Nach dem Login kopieren

muss in

geändert werden
<button onclick="onClick(event)">获得OuterHTML</button>
<script type="text/javascript">
function onclick(event){
event = event || window.event;
alert(event.clientX);
}
</script> 
Nach dem Login kopieren

kann in beiden Browsern verwendet werden

3.HTML-Objekterfassungsproblem

FireFox-Erfassungsmethode document.getElementById("idName")

dh verwenden Sie document.idname oder document.getElementById("idName")

Lösung: Verwenden Sie document.getElementById("idName");

4. Konstantenproblem

Unter Firefox können Sie das Schlüsselwort const oder das Schlüsselwort var verwenden, um Konstanten zu definieren;

Unter IE können Sie nur das Schlüsselwort var verwenden, um Konstanten zu definieren

Lösung: Verwenden Sie das Schlüsselwort var einheitlich, um Konstanten zu definieren.

5.Frame-Problem Nehmen Sie den folgenden Rahmen als Beispiel:

<frame src="xxx.html" id="frameId" name="frameName" /> 
Nach dem Login kopieren
a) Auf das Rahmenobjekt zugreifen

IE: Verwenden Sie window.frameId oder window.frameName, um auf dieses Frame-Objekt zuzugreifen. FrameId und FrameName können denselben Namen haben

Firefox: Auf dieses Frame-Objekt kann nur mit window.frameName zugegriffen werden

Darüber hinaus können Sie window.document.getElementById("frameId") verwenden, um sowohl im IE als auch in Firefox auf dieses Frame-Objekt zuzugreifen

b) Rahmeninhalt wechseln

Funktioniert sowohl im IE als auch in Firefox

window.document.getElementById("testFrame").src = "xxx.html" oder window.frameName.location = "xxx.html"

um den Inhalt des Rahmens zu wechseln;

Wenn Sie die Parameter im Frame zurück an das übergeordnete Fenster übergeben müssen (beachten Sie, dass es sich nicht um einen Öffner, sondern um ein übergeordnetes Fenster handelt), können Sie „parent“ im Frame verwenden, um auf das übergeordnete Fenster zuzugreifen. Zum Beispiel:

parent.document.form1.filename.value="Aqing"

6. Körperproblem

Der Körper von Firefox existiert, bevor das Body-Tag vollständig vom Browser gelesen wird; der Körper von IE muss jedoch vorhanden sein, nachdem das Body-Tag vollständig vom Browser gelesen wurde 7. Der Unterschied zwischen dem übergeordneten Element (parentElement) von Firefox und IE

IE: obj.parentElement

firefox:obj.parentNode
Lösung: Da sowohl Firefox als auch IE DOM unterstützen, verwenden sie alle obj.parentNode

8.InnerText-Problem

innerText kann im IE normal funktionieren, innerText funktioniert jedoch nicht in Firefox. Sie müssen textContent verwenden Lösung:

9. Der Unterschied zwischen AJAX und XMLHTTP

if (navigator.appName.indexOf("Explorer") > -1) {
document.getElementById('element').innerText = "my text";
} else {
document.getElementById('element').textContent = "my text";
} 
Nach dem Login kopieren

Hinweis: Im IE kann der Inhalt der Methode xmlhttp.send(content) leer sein, aber in Firefox darf er nicht null sein. Send("") sollte verwendet werden, da sonst ein 411-Fehler auftritt.

Die in diesem Artikel vorgestellte Zusammenfassung der JavaScript-Browserkompatibilität und die allgemeine Browserkompatibilitätsanalyse werden Ihnen hier hoffentlich hilfreich sein.
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage