2010-02-24 18 views
33
if(firefox and is on a computer){ 
alert('using firefox on a computer') 
}else{ 
alert("using something else!"); 
} 

Bunu nasıl yapabilirim?Javascript'te, şu andaki tarayıcımın bir bilgisayarda Firefox olup olmadığına nasıl karar verebilirim?

+2

"demek bir bilgisayarda"? IPhone'ları ve diğer mobil uygulamaları da tespit etmek ister misiniz? –

+1

Bunu neden bilmek istiyorsun? – Gumbo

+2

çünkü q, firefox VE bilgisayarda mı çalışıyor? Bilgisayardaki bir şey önemli olmalı, aksi takdirde orada olmayacaktı. –

cevap

51

Ne tarayıcı algılama adı verilen peşindeler: Ancak

if ($.browser.mozilla) { ... 

, kullanıcı aracısını taklit etmek kolay olduğu için tarayıcı koklama önerilmez, başka bir tarayıcı gibi davranın!

Sen etsen iyi kullanım özelliği algılama, ya kendi yolunu, ya jQuery.support arabirimi üzerinden: http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/

Düzenleme:: İşte

http://api.jquery.com/jQuery.support/ kendi kullanımınız için uzatmakla ilgili bir makale hem bu yazıyı bulundu

yardımcı olan: When IE8 is not IE8 what is $.browser.version?

+1

Demek istediniz cesaret kırdın mı? ;) Özellik tespiti için +1, lütfen 'doğru yolla' yapın: http://www.nczonline.net/blog/2009/12/29/feature-detection-is-not-browser-detection/ –

+0

@Marcel Korpel: Haha, teşekkürler! –

+0

Onu bana dövdün Marcel :) –

-7

JQuery gibi gerçek bir kitaplık kullanın, o zaman gerçekten endişelenmenize gerek yok.

+6

-1 - bir kitaplığı önermek iyidir, etiketlerde zaten listelenen bir kitaplığı önermek anlamsızdır, söz konusu kitaplık ile sorunun nasıl çözüleceğini açıklamamak yararlıdır. – Quentin

+0

Sadece bir kütüphaneye bağlı olarak dili anlamaya çalışmak yerine kötü bir şeydir. Bazı javascript de bilmelisin. – poo

+0

Tarayıcıyı algılamak sadece javacript hakkında değil. Daha sonra kullanıcı aracı dizesini barındıran dili ve platformu karıştırmanız. –

-3

Bunun için navigator.userAgent kullanabilirsiniz. o Mozilla Ama gitmeye hazır bir şey kullanmak istiyorsanız, onay

+4

Hemen hemen her şey iPhone'da Safari dahil olmak üzere * Mozilla *… dizesini içerir! Bu, Firefox'un kullanılmakta olup olmadığını belirlemek için işe yaramaz, bir bilgisayarın kullanılmakta olup olmadığını belirlemek için işe yaramaz! – Quentin

+0

Kötü amaçlı * Mozilla * etiketinin ayrıntılı bir geçmişi için http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string adresine bir göz atın. –

1

Sen genel olarak javascript en navigator.userAgent veya navigator nesne ile kontrol yapabilir,

içeriyorsa sadece görmek Bu:

( )

Bunun yardımcı olacağını umuyorum, Sinan.

1

Bir tarayıcı değil, ihtiyacınız olan özellikleri algılamak daha iyidir. Örneğin, eğer sen bunu kontrol edebilirsiniz, foo() desteklenir olmadığını bilmek gerekiyorsa (foo) {}

4
navigator.sayswho= (function(){ 
    var N= navigator.appName, ua= navigator.userAgent, tem; 
    var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); 
    if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; 
    M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?']; 
    return M.join(' '); 
})(); 

adından da anlaşılacağı gibi, bu şimdiye kullanıcılardan ve test kodunda günlük hataları kullanmak ... aslında bir şey yapması gerektiğini istemeden önce tarayıcı o ancak kullanım nesne algılama de öyledir diyen

olduğunu Birden çok tarayıcıda - kullanıcı dizesini biliyorum.

10

Bunun gibi: Firefox için kontrol edin. Ya da başka bir tarayıcı.

window.onload = function() { 
      // alert(navigator.userAgent); 
      if (navigator.userAgent.indexOf("Firefox") > 0) { 
       alert("ff"); 
      } 
     } 
+0

Durumum için çalışıyor, teşekkürler! – SlickRemix

1

Bir yorumda zaten sorulduğu gibi: neden bunu istiyorsunuz? Tarayıcı koklama kötü bir alışkanlıktır ve gereken sadece birkaç durum vardır.

Bunun yerine, özellik algılama özelliğini kullanın. described by Nicholas Zakas olarak, göreceli olarak 'yaygın olmayan' özellikleri kullanmadan önce test etmelisiniz ve sadece bu testlere güvenmelisiniz, bu yüzden başarısız olursunuz.Örneğin, do

if (window.XMLHttpRequest) 
    var xhr = new XMLHttpRequest(); 

yerine

if ((brwsr.IE && brwsr.IE.version >= 7) || (brwsr.firefox) || (brwsr.opera)) 
    var xhr = new XMLHttpRequest(); 

Ve ayrıca değil

if (window.XMLHttpRequest) 
    // Hey, native XMLHttpRequest-support, so position: fixed is also supported 

(yerine, position: fixed destekleniyorsa testi)

Orada mevcut yapacağızgibi isimleri olan birkaç yaygın tarayıcıve Midori da bu özellikleri destekleyebilir veya desteklemeyebilir, bu nedenle komut dosyalarınız, özellik tespiti kullanılırken sessizce çalışacaktır.

Ancak, bu tekniğin çok iyi ve kapsamlı bir açıklamasını içerdiğinden lütfen mentioned article'u okuyun. (Bu arada, Zakas'ın Professional JavaScript for Web Developers'un hala bilinmediğini düşünüyorum.)

+2

Her zaman işe yaradıysa iyi olurdu. Ancak bazen, özelliklerin farklı tarayıcılarda biraz farklı şekilde uygulandığı bir durum söz konusudur, ancak bu fark bir değişkende bildirilmez. Mesela, problem ile başa çıkmaya çalıştığım, firefox'ta engelli alanlardan gelen metinleri kopyalayamazsınız, ancak diğer tüm tarayıcılarda yapabilirsiniz. Bu yüzden, firefox'ta readOnly özniteliğini kullanmaya geçmem gerekiyor. Bunu, kullanıcı aracısını tanımaktan başka bir şekilde algılama yolu yoktur. – jsarma

30

Aşağıda bazı şeyler yapıyorum; ne yapar

function checkBrowser(){ 
    c = navigator.userAgent.search("Chrome"); 
    f = navigator.userAgent.search("Firefox"); 
    m8 = navigator.userAgent.search("MSIE 8.0"); 
    m9 = navigator.userAgent.search("MSIE 9.0"); 
    if (c > -1) { 
     browser = "Chrome"; 
    } else if (f > -1) { 
     browser = "Firefox"; 
    } else if (m9 > -1) { 
     browser ="MSIE 9.0"; 
    } else if (m8 > -1) { 
     browser ="MSIE 8.0"; 
    } 
    return browser; 
} 
3
if (navigator.userAgent.indexOf("Firefox") != -1) { 

//some specific code for Mozilla 

} 
İlgili konular