Pertanyaan Deteksi Safari menggunakan jQuery


Meskipun keduanya adalah browser berbasis WebKit, tanda kutip urlencoda Safari di URL sementara Chrome tidak.

Oleh karena itu saya perlu membedakan antara keduanya di JS.

dokumen pendeteksi browser jQuery tandai "safari" seperti yang ditinggalkan.

Apakah ada metode yang lebih baik atau apakah saya hanya bertahan dengan nilai yang tidak berlaku lagi untuk saat ini?


97
2018-05-05 14:52


asal


Jawaban:


Menggunakan campuran feature detection dan Useragent tali:

    var is_chrome = !!window.chrome && !is_opera;
    var is_explorer= typeof document !== 'undefined' && !!document.documentMode && !isEdge;
    var is_firefox = typeof window.InstallTrigger !== 'undefined';
    var is_safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
    var is_opera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

Pemakaian:
if (is_safari) alert('Safari');

Atau untuk Safari saja, gunakan ini:

if ( /^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {alert('Its Safari');}

303
2017-10-14 13:04



Hal berikut mengidentifikasi Safari 3.0+ dan membedakannya dari Chrome:

isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)

66
2017-10-16 14:43



sayangnya contoh di atas juga akan mendeteksi browser default android sebagai Safari, yang tidak. Saya menggunakan navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Android') == -1


10
2017-12-16 11:05



Untuk memeriksa Safari, saya menggunakan ini:

$.browser.safari = ($.browser.webkit && !(/chrome/.test(navigator.userAgent.toLowerCase())));
if ($.browser.safari) {
    alert('this is safari');
}

Ini bekerja dengan benar.


7
2017-08-31 09:46



Rupanya satu-satunya solusi yang dapat diandalkan dan diterima adalah melakukan deteksi fitur seperti ini:

browser_treats_urls_like_safari_does = false;
var last_location_hash = location.hash;
location.hash = '"blah"';
if (location.hash == '#%22blah%22')
    browser_treats_urls_like_safari_does = true;
location.hash = last_location_hash;

3
2018-06-16 12:50



Satu-satunya cara saya temukan adalah memeriksa apakah navigator.userAgent berisi kata iPhone atau iPad

if (navigator.userAgent.toLowerCase().match(/(ipad|iphone)/)) {
    //is safari
}

2
2018-02-18 17:42



Jika Anda memeriksa penggunaan browser $.browser. Tetapi jika Anda memeriksa dukungan fitur (disarankan) kemudian gunakan $.support.

Anda TIDAK harus menggunakan $ .browser untuk mengaktifkan / menonaktifkan fitur di halaman. Alasannya tidak bisa diandalkan dan umumnya tidak disarankan.

Jika Anda memerlukan dukungan fitur maka saya sarankan modernizr.


1
2018-05-05 14:59



FUNGSI Generik

 getBrowseActive = function (browserName) {
   if (navigator.userAgent.indexOf(browserName) > -1)
     return true;

   return false;
 };

0
2017-07-15 20:49



//Check if Safari
  function isSafari() {
      return /^((?!chrome).)*safari/i.test(navigator.userAgent);
  }
//Check if MAC
     if(navigator.userAgent.indexOf('Mac')>1){
        alert(isSafari());
     }

http://jsfiddle.net/s1o943gb/10/


0
2017-08-27 17:29