2016-04-27 12 views

Odpowiedz

3

Łańcuch agenta użytkownika staje się bezsensowny i wyjątkowo zawodny.

Nie należy używać łańcucha agenta użytkownika, należy raczej użyć funkcji wykrywania . Jeśli potrzebujesz skorzystać z funkcji X, sprawdź, czy X jest dostępny.

Ale aby odpowiedzieć bezpośrednio na twoje pytanie, nie ma alternatywnego JS.

2

identyfikacja Przeglądarka oparta na wykrywaniu ciąg agenta użytkownika jest zawodne i nie jest zalecane, ponieważ ciąg agenta użytkownika jest użytkownik konfigurowalne.

Na przykład:

  • W Firefoksie można zmienić preferencje general.useragent.override w about: config. Niektóre rozszerzenia przeglądarki Firefox mają wartość ; zmienia to jednak tylko nagłówek HTTP, który zostanie wysłany, a nie wpływa na wykrywanie przeglądarki wykonywane przez kod JavaScript.
  • Opera 6+ pozwala użytkownikom ustawić ciąg identyfikacyjny przeglądarka poprzez menu
  • Microsoft Internet Explorer wykorzystuje rejestr Windows
  • Safari i iCab umożliwić użytkownikom zmianę agenta użytkownika przeglądarce ciąg predefiniowane Internet Explorer lub Netscape ciągi za pośrednictwem menu .

Source

myślę, że starają usunąć całkowicie tę funkcję z JavaScript.

Aktualizacja:

Object-Oriented JavaScript, 2nd Edition: To lepiej nie polegać na ciąg agenta użytkownika, ale w użyciu funkcji wąchania (zwany również wykrywanie możliwości) zamiast. Powodem tego jest to, że trudno jest śledzić wszystkie przeglądarki i ich różne wersje pod numerem . Znacznie łatwiej jest po prostu sprawdzić, czy funkcja, którą zamierzamy użyć, jest rzeczywiście dostępna w przeglądarce użytkownika pod adresem . Na przykład spojrzeć na następującego kodu:

if (typeof window.addEventListener === 'function') { 

    // feature is supported, let's use it 
} 
else { 

    // hmm, this feature is not supported, will have to 
    // think of another way 
} 
+1

modernizatora już wykorzystuje detekcję funkcji. Na przykład: https://github.com/Modernizr/Modernizr/blob/master/src/prefixedCSSValue.js – Quentin

+0

Tak, masz rację: –

+0

Jak wykrywasz funkcję, aby obejść błąd renderowania? – Jules

Powiązane problemy