Heim Web-Frontend js-Tutorial Web-Frontend-Lösungen für Browserkompatibilitätsprobleme

Web-Frontend-Lösungen für Browserkompatibilitätsprobleme

Mar 14, 2018 pm 01:36 PM
web 兼容性

Dieses Mal werde ich Ihnen die Web-Front-End-Lösung für das Browser-Kompatibilitätsproblem vorstellen. Was sind die Vorsichtsmaßnahmen für das Web-Front-End, um das Browser-Kompatibilitätsproblem zu lösen? . Werfen wir einen Blick darauf.

Das sogenannte Browserkompatibilitätsproblem bezieht sich auf die Situation, in der verschiedene Browser denselben Codeabschnitt unterschiedlich interpretieren, was zu inkonsistenten Seitenanzeigeeffekten führt. In den meisten Fällen besteht unsere Anforderung darin, dass unabhängig davon, welchen Browser der Benutzer zum Anzeigen unserer Website oder zum Anmelden bei unserem System verwendet, ein einheitlicher Anzeigeeffekt erzielt werden sollte. Daher sind Browser-Kompatibilitätsprobleme Probleme, auf die Front-End-Entwickler häufig stoßen und die gelöst werden müssen:

1. css3MedienabfrageKompatibilitätslösung: Respond.js

GitHub-Adresse: https://github.com/scottjehl/Respond
(aus dem Internet)
IE8 unterstützt keine CSS-Medienabfragen, was sich stark nachteilig auf das responsive Design auswirkt. Respond.js kann dazu beitragen, dass IE6-8 mit den Medienabfragebedingungen „Mindest-/Höchstbreite“ kompatibel ist.

Verwendung: Verweisen Sie auf Respond.js nach dem Referenzspeicherort aller CSS-Dateien auf der Seite. Und je früher auf Respond.js verwiesen wird, desto geringer ist die Wahrscheinlichkeit, dass der Benutzer ein Flackern der Seite sieht.

2. Probleme mit benutzerdefinierten Attributen

Problembeschreibung: Unter IE können Sie die Methode zum Abrufen regulärer Attribute verwenden, oder Sie können getAttribute() verwenden, um benutzerdefinierte Attribute abzurufen In Firefox können benutzerdefinierte Attribute nur mit getAttribute() abgerufen werden.
Lösung: Benutzerdefinierte Attribute über getAttribute() abrufen.

3. Das Problem, dass der Variablenname mit der ID in HTML übereinstimmt

Problembeschreibung: Unter IE kann die ID des HTML-Objekts direkt als Variablenname verwendet werden Untergeordnetes Objekt des Dokuments, jedoch nicht unter Firefox. Unter IE können Sie denselben Variablennamen wie die HTML-Objekt-ID verwenden, jedoch nicht unter IE.
Lösung: Verwenden Sie document.getElementById("idName") anstelle von document.idName. Es ist am besten, Variablennamen nicht mit derselben HTML-Objekt-ID zu verwenden, um Fehler beim Deklarieren von Variablen zu vermeiden. Fügen Sie immer das Schlüsselwort var hinzu, um Mehrdeutigkeiten zu vermeiden.

4. Const-Problem

Problembeschreibung: Unter Firefox können Sie das const-Schlüsselwort oder das var-Schlüsselwort verwenden, um Konstanten zu definieren; unter IE können Sie nur das verwenden Schlüsselwort var zum Definieren von Konstanten.
Lösung: Verwenden Sie das Schlüsselwort var einheitlich, um Konstanten zu definieren. In Bezug auf const, eine Methode zum Definieren von Variablen nach let in ES6, ist zu beachten, dass Sie beim Deklarieren einer Variablen ihr einen Wert zuweisen müssen, andernfalls wird ein Fehler gemeldet.

5. Window.event-Problem

Problembeschreibung: window.event kann nur unter IE ausgeführt werden, nicht jedoch unter Firefox. Dies liegt daran, dass das Ereignis von Firefox nur ausgeführt werden kann, wenn das Ereignis auftritt. Für den Einsatz vor Ort.

Lösung: Fügen Sie den Ereignisparameter zu der Funktion hinzu, in der das Ereignis auftritt, und verwenden Sie var myEvent = evt?evt:(window.event?window.event:null) im Funktionskörper (vorausgesetzt, der formale Parameter ist evt)
Beispiel:

<input type="button" onclick="doSomething(event)"/> 
<script language="javascript"> 
function doSomething(evt) { 
    var myEvent = evt?evt:(window.event?window.event:null) 
    ...} 123456
Nach dem Login kopieren
6. Probleme mit event.x und event.y

7. Ermitteln Sie die Position der Maus auf der Seite

Unter IE das Ereignisobjekt hat x-, y-Attribute, aber es gibt keine pageX-, pageY-Attribute; >Verwenden Sie mX (mX = event. x ? event.x : event.pageX;), um event.x unter IE oder event.pageX unter Firefox zu ersetzen.

Bezüglich des Frame-Problems

Nehmen Sie den folgenden Frame als Beispiel:

1. Greifen Sie auf das Frame-Objekt zu

IE: Verwenden Sie window.frameId oder window.frameName, um auf das Frame-Objekt zuzugreifen.

Firefox: Verwenden Sie window.frameName, um auf den Frame zuzugreifen Objekt;

Lösung: Vereinheitlichung Verwenden Sie window.document.getElementById("frameId"), um auf dieses Frame-Objekt zuzugreifen

Sie können window.document.getElementById("frameId") verwenden. src = „webjx.com.html“ oder window.frameName.location = „webjx.com.html“, um den Inhalt des Frames zu ändern;

Wenn Sie die Parameter im Frame zurück an das übergeordnete Fenster übergeben müssen, Sie können
parent im Frame-Schlüsselwort
verwenden, um auf das übergeordnete Fenster zuzugreifen.

8. Problem beim Laden des Bodys

Problembeschreibung: Das Body-Objekt von Firefox existiert, bevor das Body-Tag vollständig vom Browser gelesen wird erst dann vorhanden, wenn der Browser sie vollständig gelesen hat.
[Hinweis] Dieses Problem wurde nicht tatsächlich überprüft und wird nach der Überprüfung geändert. [Hinweis] Es wurde bestätigt, dass das obige Problem in IE6, Opera9 und FireFox2 nicht auftritt. Ein einfaches JS-Skript kann auf alle Objekte und Elemente zugreifen, die vor dem Skript geladen wurden, auch wenn das Element nicht geladen wurde noch.

9. Ereignisdelegationsmethode

Event对象提供了一个属性叫target,可以返回事件的目标节点,我们成为事件源,也就是说,target就可以表示为当前的事件操作的dom,但是不是真正操作dom,当然,这个是有兼容性的,标准浏览器用ev.target,IE浏览器用event.srcElement,此时只是获取了当前节点的位置,并不知道是什么节点名称,这里我们用nodeName来获取具体是什么标签名,这个返回的是一个大写的,我们需要转成小写再做比较(习惯问题):

window.onload = function(){
     var oUl = document.getElementById("ul1");
     oUl.onclick = function(ev){
        var ev = ev || window.event;
            var target = ev.target || ev.srcElement;
           if(target.nodeName.toLowerCase() == &#39;li&#39;){
                alert(123);
         alert(target.innerHTML);
        }
     }
}1234567891011
Nach dem Login kopieren

十、访问的父元素的区别

问题说明:在IE下,使用 obj.parentElement 或 obj.parentNode 访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。
解决方法:因为firefox与IE都支持DOM,因此统一使用obj.parentNode 来访问obj的父结点。

十一、innerText的问题.

问题说明:innerText在IE中能正常工作,但是innerText在FireFox中却不行。
解决方法:在非IE浏览器中使用textContent代替innerText。

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

十二、用setAttribute设置事件

var obj = document.getElementById(&#39;objId&#39;); 
obj.setAttribute(&#39;onclick&#39;,&#39;funcitonname();&#39;);12
Nach dem Login kopieren

FIREFOX支持,IE不支持
解决办法:
IE中必须用点记法来引用所需的事件处理程序,并且要用赋予匿名函数

var obj = document.getElementById(&#39;objId&#39;); 
obj.onclick=function(){fucntionname();};12
Nach dem Login kopieren

十三、设置类名

setAttribute(‘class’,’styleClass’)
FIREFOX支持,IE不支持(指定属性名为class,IE不会设置元素的class属性,相反只使用setAttribute时IE自动识CLASSNAME属性)
解决办法如下:

setAttribute(&#39;class&#39;,&#39;styleClass&#39;) 
setAttribute(&#39;className&#39;,&#39;styleClass&#39;) 
//或者直接
 object.className=&#39;styleClass&#39;;123456
Nach dem Login kopieren

十四、绑定事件

在IE下我们通常使用attachEvent方法

var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function); btn1Obj.attachEvent("onclick",method1); btn1Obj.attachEvent("onclick",method2); btn1Obj.attachEvent("onclick",method3); 12345
Nach dem Login kopieren

可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法

var btn1Obj = document.getElementById("btn1"); 
//element.addEventListener(type,listener,useCapture); btn1Obj.addEventListener("click",method1,false); 
btn1Obj.addEventListener("click",method2,false); 
btn1Obj.addEventListener("click",method3,false); 12345
Nach dem Login kopieren

顺变说一下这两个的使用方式:

addEventListener的使用方式

target.addEventListener(type,listener,useCapture);
Nach dem Login kopieren

target: 文档节点、document、window 或 XMLHttpRequest。
type: 字符串,不含“on”如“click”、“mouseover”、“keydown”等。
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。
useCapture :是否使用捕捉,一般用 false 。
例如:

document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 1
Nach dem Login kopieren

2.对于attachEvent

target.attachEvent(type, listener);
Nach dem Login kopieren

target: 文档节点、document、window 或 XMLHttpRequest。
type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。

例如:

document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);}); 1
Nach dem Login kopieren

但是他们都给出了事件的移除方法

removeEventListener(event,function,capture/bubble);
Nach dem Login kopieren

十五、ajax请求

对于ajax请求只要出现兼容性的方面就是创建对象时候的区别我们要考虑IE6的情况,下面给出代码

   //设置IE6的情况,注意,在判断XMLHttpRequest是否存在时将其
    //设置为window.XMLHttpRequest,这样将其设置为属性,在检测时就不是未定义
    //而是undefine
    //1.创建Ajax对象
    if(window.XMLHttpRequest){        var oAjax=new XMLHttpRequest();
    }    else{        var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
    }
Nach dem Login kopieren

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

前端页面测试的方法

javascript中call与apply的应用

Das obige ist der detaillierte Inhalt vonWeb-Frontend-Lösungen für Browserkompatibilitätsprobleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vergleich und Differenzanalyse der Versionen Bluetooth 5.3 und 5.2 Vergleich und Differenzanalyse der Versionen Bluetooth 5.3 und 5.2 Dec 28, 2023 pm 06:08 PM

Heutzutage behaupten viele Mobiltelefone, die Bluetooth 5.3-Version zu unterstützen. Was ist also der Unterschied zwischen Bluetooth 5.3 und 5.2? Tatsächlich handelt es sich im Wesentlichen um nachfolgende aktualisierte Versionen von Bluetooth 5, und es gibt keinen großen Unterschied in den meisten Leistungen und Funktionen. Der Unterschied zwischen Bluetooth 5.3 und 5.2: 1. Datenrate 1 und 5.3 können höhere Datenraten bis zu 2 Mbit/s unterstützen. 2. Während 5.2 nur maximal 1 Mbit/s erreichen kann, bedeutet dies, dass 5.3 Daten schneller und stabiler übertragen kann. 2. Verbesserung der Verschlüsselungskontrolle 2. Bluetooth 5.3 verbessert die Optionen zur Kontrolle der Länge des Verschlüsselungsschlüssels, erhöht die Sicherheit und kann eine bessere Verbindung zur Zugangskontrolle und anderen Geräten herstellen. 3. Da die Administratorsteuerung einfacher ist, ist es gleichzeitig bequemer und schneller, eine Verbindung herzustellen, was in 5.2 nicht der Fall ist.

Lösung für i7-7700, kein Upgrade auf Windows 11 möglich Lösung für i7-7700, kein Upgrade auf Windows 11 möglich Dec 26, 2023 pm 06:52 PM

Die Leistung des i77700 reicht völlig aus, um Win11 auszuführen, aber Benutzer stellen fest, dass ihr i77700 nicht auf Win11 aktualisiert werden kann. Dies ist hauptsächlich auf die von Microsoft auferlegten Einschränkungen zurückzuführen, sodass sie es installieren können, solange sie diese Einschränkung überspringen. i77700 kann nicht auf win11 aktualisiert werden: 1. Weil Microsoft die CPU-Version begrenzt. 2. Nur die Intel-Versionen der achten Generation und höher können direkt auf Win11 aktualisiert werden. 3. Als 7. Generation kann der i77700 die Upgrade-Anforderungen von Win11 nicht erfüllen. 4. Der i77700 ist jedoch hinsichtlich der Leistung durchaus in der Lage, Win11 reibungslos zu nutzen. 5. Sie können also das Win11-Direktinstallationssystem dieser Site verwenden. 6. Nachdem der Download abgeschlossen ist, klicken Sie mit der rechten Maustaste auf die Datei und „laden“ sie. 7. Doppelklicken Sie, um den „One-Click“-Vorgang auszuführen

Wie kompatibel ist die Go-Sprache auf Linux-Systemen? Wie kompatibel ist die Go-Sprache auf Linux-Systemen? Mar 22, 2024 am 10:36 AM

Die Go-Sprache ist auf Linux-Systemen sehr gut kompatibel. Sie kann problemlos auf verschiedenen Linux-Distributionen ausgeführt werden und unterstützt Prozessoren unterschiedlicher Architekturen. In diesem Artikel wird die Kompatibilität der Go-Sprache auf Linux-Systemen vorgestellt und ihre leistungsstarke Anwendbarkeit anhand spezifischer Codebeispiele demonstriert. 1. Installieren Sie die Go-Sprachumgebung auf einem Linux-System. Sie müssen lediglich das entsprechende Go-Binärpaket herunterladen und die relevanten Umgebungsvariablen festlegen. Im Folgenden finden Sie die Schritte zur Installation der Go-Sprache auf einem Ubuntu-System:

Kann ich Bluetooth-Kopfhörer im Flugzeugmodus verwenden? Kann ich Bluetooth-Kopfhörer im Flugzeugmodus verwenden? Feb 19, 2024 pm 10:56 PM

Mit der kontinuierlichen Weiterentwicklung moderner Technologie sind drahtlose Bluetooth-Headsets zu einem unverzichtbaren Bestandteil des täglichen Lebens der Menschen geworden. Das Aufkommen kabelloser Kopfhörer macht unsere Hände frei und ermöglicht es uns, Musik, Anrufe und andere Unterhaltungsaktivitäten freier zu genießen. Wenn wir fliegen, werden wir jedoch oft gebeten, unsere Telefone in den Flugmodus zu versetzen. Die Frage ist also: Kann ich Bluetooth-Kopfhörer im Flugzeugmodus verwenden? In diesem Artikel gehen wir dieser Frage nach. Lassen Sie uns zunächst verstehen, was der Flugzeugmodus bewirkt und bedeutet. Der Flugmodus ist ein spezieller Modus für Mobiltelefone

Detaillierte Erläuterung von Win11-Kompatibilitätsproblemen mit Win10-Software Detaillierte Erläuterung von Win11-Kompatibilitätsproblemen mit Win10-Software Jan 05, 2024 am 11:18 AM

Die Software im Win10-System wurde perfekt optimiert, aber für die neuesten Win11-Benutzer muss jeder neugierig sein, ob dieses System unterstützt werden kann. Im Folgenden finden Sie eine detaillierte Einführung in Win11-Software, die Win10 nicht unterstützt. Kommen Sie und finden Sie es heraus zusammen. Unterstützt Win11 Win10-Software: 1. Win10-Systemsoftware und sogar Win7-Systemanwendungen sind gut kompatibel. 2. Laut Feedback von Experten, die das Win11-System verwenden, gibt es derzeit keine Probleme mit der Anwendungsinkompatibilität. 3. Sie können also bedenkenlos ein Upgrade durchführen. Normalen Benutzern wird jedoch empfohlen, mit dem Upgrade zu warten, bis die offizielle Version von Win11 veröffentlicht wird. 4. Win11 ist nicht nur gut kompatibel, sondern verfügt auch über Windo

WIN10-Kompatibilität verloren, Schritte zur Wiederherstellung WIN10-Kompatibilität verloren, Schritte zur Wiederherstellung Mar 27, 2024 am 11:36 AM

1. Klicken Sie mit der rechten Maustaste auf das Programm und stellen Sie fest, dass die Registerkarte [Kompatibilität] im sich öffnenden Eigenschaftenfenster nicht zu finden ist. 2. Klicken Sie auf dem Win10-Desktop mit der rechten Maustaste auf die Schaltfläche „Start“ in der unteren linken Ecke des Desktops und wählen Sie im Popup-Menü den Menüpunkt [Ausführen]. 3. Das Win10-Ausführungsfenster wird geöffnet. Geben Sie gpedit.msc in das Fenster ein und klicken Sie dann auf die Schaltfläche OK. 4. Das Fenster „Lokaler Gruppenrichtlinien-Editor“ wird geöffnet. Klicken Sie im Fenster auf den Menüpunkt [Computerkonfiguration/Administrative Vorlagen/Windows-Komponenten]. 5. Suchen Sie im geöffneten Windows-Komponentenmenü den Menüpunkt [Anwendungskompatibilität] und dann im rechten Fenster den Einstellungspunkt [Eigenschaftsseite für Programmkompatibilität entfernen]. 6. Klicken Sie mit der rechten Maustaste auf das Einstellungselement und im Popup-Menü

So aktivieren Sie den administrativen Zugriff über die Cockpit-Web-Benutzeroberfläche So aktivieren Sie den administrativen Zugriff über die Cockpit-Web-Benutzeroberfläche Mar 20, 2024 pm 06:56 PM

Cockpit ist eine webbasierte grafische Oberfläche für Linux-Server. Es soll vor allem neuen/erfahrenen Benutzern die Verwaltung von Linux-Servern erleichtern. In diesem Artikel besprechen wir die Cockpit-Zugriffsmodi und wie Sie den Administratorzugriff von CockpitWebUI auf das Cockpit umstellen. Inhaltsthemen: Cockpit-Eingabemodi Ermitteln des aktuellen Cockpit-Zugriffsmodus Aktivieren des Verwaltungszugriffs für das Cockpit über CockpitWebUI Deaktivieren des Verwaltungszugriffs für das Cockpit über CockpitWebUI Fazit Cockpit-Eingabemodi Das Cockpit verfügt über zwei Zugriffsmodi: Eingeschränkter Zugriff: Dies ist die Standardeinstellung für den Cockpit-Zugriffsmodus. In diesem Zugriffsmodus können Sie vom Cockpit aus nicht auf den Webbenutzer zugreifen

Einführung der Treiber-Download-Methode für Win10, um die Kompatibilität sicherzustellen Einführung der Treiber-Download-Methode für Win10, um die Kompatibilität sicherzustellen Jan 01, 2024 pm 06:59 PM

Der Treiber eines Hardwaregeräts ist für uns eines der wichtigsten Programme für die normale Verwendung dieses Geräts. Manchmal kann es jedoch vorkommen, dass der von uns heruntergeladene und installierte Treiber nicht kompatibel ist. Tatsächlich kann das System automatisch einen kompatiblen Treiber zum Herunterladen finden Schauen wir uns das mal gemeinsam an. Wie mache ich den Win10-Treiber kompatibel? 1. Suchen Sie zuerst diesen Computer auf dem Desktop, klicken Sie mit der rechten Maustaste und öffnen Sie „Eigenschaften“. 2. Suchen und öffnen Sie dann „Geräte-Manager“ auf der linken Seite. 3. Suchen Sie das Gerät, das Sie herunterladen möchten Installieren Sie im Gerätemanager, klicken Sie mit der rechten Maustaste und wählen Sie „Treiber aktualisieren“ 4. Wählen Sie dann „Automatisch nach aktualisierter Treibersoftware suchen“ 5. Warten Sie abschließend eine Weile und das folgende Fenster wird angezeigt, was bedeutet, dass die Treiberinstallation abgeschlossen ist .

See all articles