Wie Sie festlegen, navigator, userAgent?
Ok, das ist ein edge-Fall, ich habe es geschafft, zu landen. Ich Teste meine app auf das neue Tizen OS. Mein JS code hat Tausende von navigator überprüft. So etwas wie:
navigator.userAgent.toLocaleLowerCase().indexOf("android") || navigator.userAgent.toLocaleLowerCase().indexOf("iPad")
Nun Tizen OS-userAgent auf meinem test-Gerät nicht haben, entweder von diesen Saiten. Viele meiner css-und JS zu brechen, als ein Ergebnis. Ich bin in der POC-Modus jetzt und wollen nicht zu verbringen viel Zeit in das hinzufügen einer zusätzlichen, prüfen Sie alle diese Bedingungen. Gibt es eine Möglichkeit, programmgesteuert festlegen userAgent ? Etwas entlang der Linien von:
navigator.userAgent += " Tizen" //does not work.
MDN , sagt eine Lesen-schreiben-Eigenschaft. Ich bin nicht in der Lage, es zu ändern, aber. Helfen Sie mir mit diesem. Entweder ein weiterer intelligenter Weg, um spoof userAgent oder der richtige Weg, um dieses. Danke.
btw:
.toLocaleLowerCase().indexOf("iPad")
ist sicherlich nie zur Arbeit zu gehen, ist es? iPad
ist nicht die Kleinschreibung.ja, dass ist meine Tippfehler.
Ich bin damit einverstanden und verstehen, dass dies schlechter Ansatz. Bitte verstehen Sie, dass ich nur versuchen, einen POC hier. Mein oberstes Ziel ist es, die test Tizen-OS.
InformationsquelleAutor Rajat Sharma | 2013-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Fall ist es dein JS-code, der den Fehler verursacht.
Haben Sie im Grunde nur entdeckt, der ultimative Grund, warum tust UA-string Erkennung wird als richtig schlechte Praxis.
Kurz gesagt, wenn Ihr code sieht aus wie beschrieben, dann machen Sie etwas falsch. Es gibt nur sehr wenige legitime Gründe für die Erfassung der UA-string, und keiner dieser Gründe gelten, um code auf dem client ausgeführt selbst.
Und Tausende Zeilen von diesem Zeug in die browser???? Das ist nur schlechtes zu tun, um die Leistung Ihrer Website.
Den userAgent-string ist ein nur-lese-Wert.
Jedoch, Sie kann überschreiben Sie die get-Methode, so gibt es Möglichkeiten, es schreibbar. Unschön, aber möglich.
Ich würde wirklich empfehlen, vermeiden, tun dies aber nicht.
Sogar ohne browser-Anbieter bewusst ändern, Ihre UA-strings zu brechen, diese Art von code (was Sie tun), Ihre Aufgabe ist grundsätzlich nie enden wollenden; Sie gehen zu müssen, halten erneuten Besuch dieser code jedes mal, wenn ein neues Gerät/browser/- version freigegeben wird, und Ihre tausenden Zeilen code wird einfach immer größer und größer.
Plus natürlich, es wird völlig unzuverlässig, wenn ein Benutzer ändert seine browser-UA-string.
Fix es jetzt mit einem hack, wenn Sie müssen, aber bewusst sein, dass dies halten Sie Essen mehr und mehr von Ihrer Zeit. Sie wirklich brauchen, um die Umstellung auf eine bessere Codierung der Praxis, wie feature-Erkennung anstelle von UA-Erkennung.
InformationsquelleAutor Spudley
Habe ich vor kurzem erstellt eine Zusammenfassung zu machen readonly propertys beschreibbar (Sie finden ein Beispiel zum überschreiben der navigator.userAgent). Wie Spudley sagte, es ist hässlich und nicht empfohlen, aber ich habe es für unit-tests zu ändern, user-agents on-the-fly, also seien Sie vorsichtig.
Kern: https://gist.github.com/moehlone/bed7dd6cb38fc55bd640
InformationsquelleAutor Philipp Möhler