SORU
12 Kasım 2010, Cuma


YANİ algılama Javascript, neden basit bir koşullu yorum kullanın değil mi?

YANİ tespit etmek için en Javascript libaries hileler her türlü yapmak.

  • bir WordPress kullanmak sayfalarınızın bazı özellikler tespit DOM içine geçici bir nesne eklemek gibi görünüyor
  • YUİ2 YAHOO.env.ua = function() (yahoo.js dosyası) kullanıcı Aracısı normal ifade ediyor

Javascript sadece IE tespit etmek için this answer doğru aklıma geldi okuduktan sonra, sadece bizim sayfa için ekleyebilirsiniz:

<!--[if IE]><script type="text/javascript">window['isIE'] = true;</script><![endif]-->

<script type="text/javascript" src="all-your-other-scripts-here.js"></script>

Şimdi window.isIE değişken sadece yaparak tüm Javascript kodu için ayarlanır:

if(window.isIE)
   ...

Bu tüm sayfalarda eklenecek, çünkü o bir ağrı neden olabilir gerçeğini yanındafarkında olabilirim hususlar/herhangi bir sorun var mı?


Daha iyi object detection rather than browser detection, kullanmayı biliyorum ama yine de tarayıcı algılama kullanmak zorunda durumlar vardır. BİLGİNİZE:

CEVAP
19 Kasım 2010, Cuma


James Padolsey burada alıntı yapacağım little snippet on GitHub Bir:

// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
// ie === undefined
// If you're in IE (>=5) then you can determine which version:
// ie === 7; // IE7
// Thus, to detect IE:
// if (ie) {}
// And to detect the version:
// ie === 6 // IE6
// ie > 7 // IE8, IE9 ...
// ie < 9 // Anything less than IE9
// ----------------------------------------------------------

// UPDATE: Now using Live NodeList idea from @jdalton

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE '   (  v)   ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

Tabii ki tüm kredileri James gitmeli, sadece Resulü (ama lütfen benim kopyala-yapıştır eylemi hatalı ise elçiye oldum.

Ayrıca oluşturulan çatal bak. Paul Irish comment iç işleyişini açıkladı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007