Erkennen von Browsertypen
Bei der Entwicklung von Erweiterungen für mehrere Browser ist es wichtig, Folgendes zu tun Identifizieren Sie den Browser des Benutzers genau, um ihn auf die entsprechende Download-Seite weiterzuleiten. Allerdings ist es aufgrund der Anfälligkeit für Spoofing unzuverlässig, sich bei der Browsererkennung auf die Zeichenfolge des Benutzeragenten zu verlassen.
Duck-Typing für genaue Browsererkennung
Um dieses Problem zu beheben, a Es wird ein Duck-Typing-Ansatz verwendet. Duck-Typing konzentriert sich auf das Verhalten und die Eigenschaften des Browsers und verlässt sich nicht auf eine bestimmte Signatur oder Identifikationszeichenfolge. Diese Methode ist robuster und weniger anfällig für Spoofing.
Demo und Implementierung
Im bereitgestellten JavaScript-Code werden verschiedene Prüfungen durchgeführt, um die gängigen Browser, einschließlich Firefox, zu identifizieren , Chrome, Safari, Opera, IE, Edge und Edge Chromium. Bei jeder Prüfung werden die einzigartigen Merkmale des Browsers untersucht, um eine genaue Erkennung sicherzustellen.
Feature-Erkennung vor Browser-Erkennung
Während die Browser-Erkennung manchmal notwendig ist, wird im Allgemeinen empfohlen, der Feature-Erkennung Vorrang einzuräumen möglich. Bei der Funktionserkennung wird überprüft, ob bestimmte Browserfunktionen vorhanden oder nicht vorhanden sind, um eine bessere Robustheit und Kompatibilität mit zukünftigen Browserversionen sicherzustellen.
Codebeispiel
Das folgende Codefragment liefert die Auf Ententypisierung basierende Browsererkennungsmethode:
// Duck-typing browser detection var isFirefox = typeof InstallTrigger !== 'undefined'; var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime); var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification)); var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; var isIE = /*@cc_on!@*/false || !!document.documentMode; var isEdge = !isIE && !!window.StyleMedia; var isEdgeChromium = isChrome && (navigator.userAgent.indexOf("Edg") != -1); var isBlink = (isChrome || isOpera) && !!window.CSS;
Das obige ist der detaillierte Inhalt vonWie kann ich Benutzerbrowser zuverlässig erkennen, ohne Benutzeragentenzeichenfolgen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!