Wygląda na to, że jQuery.browser potrafi dość łatwo zidentyfikować webkit od wersji 1.4. Ale jak mogę go użyć, aby odróżnić Chrome od Safari (i visa-versa)?Rozróżnianie Chrome od Safari za pomocą jQuery.browser
Odpowiedz
Od Sarfraz nie poprawiła swoją odpowiedź (dziękuję Sarfraz dla wskazujące mnie we właściwym kierunku), będę po funkcjonujący kod tutaj .
var userAgent = navigator.userAgent.toLowerCase();
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
// Is this a version of Chrome?
if($.browser.chrome){
userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
$.browser.version = userAgent;
// If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
$.browser.safari = false;
}
// Is this a version of Safari?
if($.browser.safari){
userAgent = userAgent.substring(userAgent.indexOf('version/') +8);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
$.browser.version = userAgent;
}
Można zrobić tak:
// Is this a version of Chrome?
if($.browser.chrome){
userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
version = userAgent;
// If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
$.browser.safari = false;
}
// Is this a version of Safari?
if($.browser.safari){
userAgent = userAgent.substring(userAgent.indexOf('safari/') +7);
userAgent = userAgent.substring(0,userAgent.indexOf('.'));
version = userAgent;
}
uhm - $ .browser.chrome jest niezdefiniowany. i $ .browser.safari jest prawdziwe zarówno dla chrome, jak i Safari –
@sAc, byłeś blisko, powinien pojawić się przed podanym kodem: 'var userAgent = navigator.userAgent.toLowerCase(); $ .browser.chrome = /chrome/.test (navigator.userAgent.toLowerCase()); var version = 0; ' – kingjeffrey
@sAc, również zmienna' version' jest niepotrzebna i powinna zostać zamieniona na '$ .browser.version'. – kingjeffrey
/Chrome/.test(navigator.userAgent)
bez jQuery
isChrome = function() {
return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
}
isSafari = function() {
return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
}
z jQuery
(W nie będzie działać z jQuery 1,9 i powyżej, w jQuery.browser
została usunięta z jQuery. Patrz http://api.jquery.com/jQuery.browser/)
$.browser.chrome = $.browser.webkit && !!window.chrome;
$.browser.safari = $.browser.webkit && !window.chrome;
pierwsze rozwiązanie jest bardzo eleganckie. – NullVoxPopuli
Dlaczego !! dla chromu, co to znaczy? – Carlos
'$ .browser.webkit &&! Window.chrome' wyniki prawdziwe w Firefox ... –
window.chrome?$.browser.chrome=!0:($.browser.webkit&&($.browser.safari=!0),$.browser.chrome=!1);
Łata dodaje $ .browser.chrome a także wykluczyć wykrywanie goolge Chrome od $ .browser.safari
także dla użytkowników innych niż JQuery:
navigator.userAgent.indexOf('WebKit') + 1 ?
((navigator.vendor || '').indexOf('Apple') + 1 ? /* Safari */ : /* Chrome */)
: /* not Webkit */
To mi się udało. To trochę sztuczka do przeczytania, jeśli nie jesteś przyzwyczajony do tego rodzaju warunkowego oświadczenia, ale dobrze to ułożyłeś. Dzięki za tonę. –
Możesz też spróbować zastosować to podejście, pracuje dla mnie.
isSafari: function()
{
var isSafari = (navigator.userAgent.indexOf('Safari') != -1
&& navigator.userAgent.indexOf('Chrome') == -1)
console.log('IsSafari : ' + isSafari);
return isSafari;
},
- 1. Wybieranie tekstu skupienia za pomocą jQuery nie działa w przeglądarce Safari i przeglądarce Chrome Chrome i
- 2. Testowanie E2E w kątomierzu za pomocą przeglądarki Firefox lub Safari?
- 3. safari/chrome onsubmit = "location.reload (true)" nie działa
- 4. Czy można wykonać migawkę sterty za pomocą przeglądarki internetowej Safari?
- 5. Przejście do CSS migocze za pomocą: odwiedzonego w Safari, Chrome i Firefox, ale nie Opera
- 6. Liniowy gradient w przeglądarkach Chrome i Safari
- 7. Formularz składać dwa razy w Chrome/Safari
- 8. Złapanie zdarzenia zamknięcia przeglądarki Chrome za pomocą sterownika Chrome
- 9. Sprawdzanie poprawności HTML5 za pomocą Opery i Safari
- 10. top.location.replace tworzy element historii w Safari/Chrome
- 11. Problem MouseOver MouseOut w Safari/Chrome
- 12. jquery .width() Problem z chrome i safari
- 13. Chrome/Safari ignoruje moje reguły resetowania?
- 14. ContentEditable fokus w przeglądarce Chrome/Safari
- 15. Chrome i Safari XSLT przy użyciu JavaScript
- 16. Ustaw język Chrome za pomocą Selenium ChromeDriver
- 17. Autoryzacja rozszerzenia chrome za pomocą Facebooka
- 18. iOS 6 - Rozróżnianie iPhone'a 5 od innych urządzeń?
- 19. vsto + rozróżnianie załączników
- 20. Rozróżnianie wielkości liter Lua
- 21. Krzyż cookies domeny za pomocą CORS w Safari
- 22. Wyłącz "przeskakiwanie" w Safari 5 za pomocą CSS lub JavaScript
- 23. "Zaloguj się za pomocą LinkedIn" nie działa w Safari mobilnym
- 24. Wykrywanie zakładki przeglądarki zamykającej za pomocą JavaScript w Mobile Safari?
- 25. Zmień wydarzenie nie uruchamiające się na wybranych elementach za pomocą "Asystenta formularzy" w przeglądarce Safari Safari
- 26. Jak otworzyć profil użytkownika na Twitterze za pomocą aplikacji Twitter za pomocą łącza w mobilnym Safari?
- 27. Pobierz dzień od DateTime za pomocą C#
- 28. Uzyskać odległość od powierzchni za pomocą ARKit
- 29. uzyskać wartość od JSON za pomocą JArray
- 30. Jak powtórzyć żądanie POST za pomocą narzędzi programistycznych Chrome?
Dla safari, $ .browser.version kończy się dając wersję webkita, a nie wersję safari. Wypróbuj userAgent.indexOf ("Version/') + 8 zamiast tego. – David
Możesz również podciągana do znaku spacji zamiast kropki w liniach, które mówią: 'userAgent = userAgent.substring (0, userAgent.indexOf ('.'));' W celu uzyskania pełnych numerów wersji zamiast tylko pierwszych część numeru wersji (numer główny). – mkmurray
@David, musisz wprowadzić małe 'v' w swoim ciągu' 'Version /' ', jak wcześniej w kodzie, w którym ciąg agenta użytkownika był pisany małymi literami. – mkmurray