Kullanıcının IE kullanıp kullanmadığını kontrol edin


390

Belirli bir sınıf ile divs tıklayarak aşağıdaki gibi bir işlevi çağırıyorum.

Kullanıcı Internet Explorer kullanıyorsa işlevi başlatırken denetleyebileceğim ve yalnızca diğer IE kullanıcıları için çalışacak şekilde başka tarayıcılar kullanıyorsa iptal / iptal edebileceğim bir yol var mı? Buradaki kullanıcıların hepsi IE8 veya daha yüksek sürümlerde olacaktı, bu yüzden IE7 ve daha düşük sürümleri kapsamam gerekmiyor.

Hangi tarayıcıyı kullandıklarını söyleyebilseydim bu harika olurdu ama gerekli değil.

Örnek fonksiyon:

$('.myClass').on('click', function(event)
{
    // my function
});

1
IE veya diğer tarayıcıları tespit etmek için modernizatörü kullanın. stackoverflow.com/questions/13478303/…
chris

7
Modern web geliştirme standartlarına göre, eski IE sürümleri ile başlamak kötü bir uygulamadır.
Rosseyn

7
Aslında, bu "kötü uygulama" standartların kendileri tarafından zorlanmaktadır, bu yüzden geliştiricinin hatası değildir ... Tarayıcılar farklı çalışır ve özellikler uygulama sorunları konusunda çok yumuşaktır. Buggy olmayan ve cehennem gibi sıkıcı olmayan bir şey yapmak için tarayıcı algılama yapmak gerekir. Başka bir en iyi uygulamayı öneririm With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all). Üzgünüm, ama bu delilik bir noktada
bitmeli

2
Günümüzde "tarayıcı algılama" yerine "özellik algılama" yapmak daha iyi bir uygulamadır. Bunun yerine tarayıcının ihtiyacınız olanı yapıp yapmadığını sorun.
Chris Rogers

2
@Chris - özür dilerim ... bunun daha fazla şaka tonuna sahip olması anlamına geliyordu. Sevincimi çaldığı ve beni acı ve hayal kırıklığıyla bıraktığı için IE'yi suçlayacağım. :)
JDB, Monica

Yanıtlar:


477

Aşağıdaki JavaScript yöntemini kullanın:

function msieversion() 
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0) // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

Ayrıntıları aşağıdaki Microsoft destek sitesinde bulabilirsiniz:

Koddan tarayıcı sürümü nasıl belirlenir

Güncelleme: (IE 11 desteği)

function msieversion() {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
    {
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    }
    else  // If another browser, return 0
    {
        alert('otherbrowser');
    }

    return false;
}

27
ua değişkeni MSIE ile hiçbir zaman başlamayacağından, bu iyi çalışmasına rağmen yazma if (msie > 0)yanıltıcıdır. Değer bulunamazsa, indexOf () işlevi 0 değil -1 döndürür. Bu nedenle if (msie > -1)daha açıklayıcı olur.
Neville Nazerane

61
Bu benim için IE11'de NaN döndürür.
verizm

7
@verism ve diğerleri: Aşağıdakiler için de çalışan bu yanıtı kontrol edin IE 11: stackoverflow.com/a/21712356/114029
Leniel Maccaferri

8
navigator.userAgent.indexOf ("MSIE")> 0 || navigator.userAgent.indexOf ("Trident")> 0 || navigator.userAgent.indexOf ("Edge")> 0
tylermauthe

12
/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)Bunun 10 ve 11'de çalıştığını biliyorum. <IE9 ve Edge'i doğrulayabilirseniz, yanıtı düzenleyin.
15'te

595

Birkaç yıl sonra ve Edge tarayıcı artık oluşturma motoru olarak Chromium kullanıyor.
Ne yazık ki IE 11'i kontrol etmek hala bir şey.

İşte IE'nin eski versiyonları gitmesi gerektiğinden daha basit bir yaklaşım.

if (window.document.documentMode) {
  // Do IE stuff
}

İşte eski cevabım (2014):

Edge'de Kullanıcı Aracısı Dizesi değişti.

/**
 * detect IEEdge
 * returns version of IE/Edge or false, if browser is not a Microsoft browser
 */
function detectIEEdge() {
    var ua = window.navigator.userAgent;

    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {
        // IE 10 or older => return version number
        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
    }

    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
        // IE 11 => return version number
        var rv = ua.indexOf('rv:');
        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
    }

    var edge = ua.indexOf('Edge/');
    if (edge > 0) {
       // Edge => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}

Örnek kullanım:

alert('IEEdge ' + detectIEEdge());

IE 10'un varsayılan dizesi:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

IE 11'in varsayılan dizesi:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

Edge 12'nin varsayılan dizesi:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 

Edge 13'ün varsayılan dizesi (thx @DrCord):

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586 

Edge 14'ün varsayılan dizesi:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300 

Kenar 15'in varsayılan dizesi:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063 

Edge 16'nın varsayılan dizesi:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299 

Kenar 17'nin varsayılan dizesi:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134 

Edge 18'in varsayılan dizesi (İçeriden önizleme):

Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730 

CodePen'de test edin:

http://codepen.io/gapcode/pen/vEJNZN


4
Yorum yaptığınız için teşekkürler. Cevabınızı henüz doğrulamamıştım, ancak bir şey hakkında yorum yapmak istiyorum: İlk 'if' bir 'dönüş' içeriyorsa, daha sonra bir 'başkasına' ihtiyacınız yok.
Mario

30
Sadece merak ediyorum, neden IE'nin yeni sürümlerinde kullanıcı aracısı satırını değiştiriyorlar? MS, korkunç web tarayıcılarını algılamamızı gerçekten istemiyor.
c00000fd

3
@SameerAlibhai Teoride kulağa hoş geliyor ama pratikte, özellikle şu anda, pratik değil. Bazen sorunlar, tek bir "özellik" algılamanın kapsamadığı ve ayrıca bazı özelliklerin yalnızca tarayıcı bilgisiyle çözülebilecek uygulama tuhaflıkları olduğu ortaya çıkar. Tarayıcı istatistikleri toplamak gibi basit bir şey yapmak istersem ne olur?
Hafif

34
Edge'in gerçekten 'IE12' olmadığı, ancak tamamen ayrı bir tarayıcı olduğu belirtilmelidir. Windows 10 hem IE11 hem de Edge yüklü olarak gelir.
moloko

16
IE için nefretim büyüyor
Kolob Kanyonu

135

Bilmek istediğiniz tek şey tarayıcının IE olup olmadığı ise, bunu yapabilirsiniz:

var isIE = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');

if ((old_ie > -1) || (new_ie > -1)) {
    isIE = true;
}

if ( isIE ) {
    //IE specific code goes here
}

Güncelleme 1: Daha iyi bir yöntem

Bunu şimdi tavsiye ederim. Hala çok okunabilir ve çok daha az kod :)

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  //IE specific code goes here
}

Kısaltılmış cevap için yorumlarda JohnnyFun'a teşekkürler :)

Güncelleme 2: CSS'de IE testi

İlk olarak, mümkünse, @supportstarayıcının belirli bir CSS özelliğini destekleyip desteklemediğini kontrol etmek için JS yerine ifadeler kullanmalısınız.

.element {
  /* styles for all browsers */
}

@supports (display: grid) {
  .element {
    /* styles for browsers that support display: grid */
  }
}

(IE'nin hiç desteklemediğini @supportsve bir @supportsifadenin içine yerleştirilmiş stilleri yok sayacağını unutmayın.)

Sorun çözülemezse, @supportsbunu yapabilirsiniz:

// JS

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);

if ( isIE ) {
  document.documentElement.classList.add('ie')
}
/* CSS */

.element {
  /* styles that apply everywhere */
}

.ie .element {
  /* styles that only apply in IE */
}

(Not: classListJS için nispeten yeni ve IE tarayıcılarından sadece IE11'de çalışıyor. Bence de IE10.)

Projenizde SCSS (Sass) kullanıyorsanız, bu basitleştirilebilir:

/* SCSS (Sass) */

.element {
  /* styles that apply everywhere */

  .ie & {
    /* styles that only apply in IE */
  }
}

Güncelleştirme 3: Microsoft Edge Ekleme (önerilmez)

Ayrıca listeye Microsoft Edge eklemek istiyorsanız, aşağıdakileri yapabilirsiniz. Ancak bunu önermiyoruz Kenar IE çok daha yetkin bir tarayıcı olduğu gibi.

var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident|Edge\//.test(ua);

if ( isIE ) {
  //IE & Edge specific code goes here
}

5
Ya da birkaç baytta aynı: ms_ie = ~ ua.indexOf ('MSIE') || ~ ua.indexOf ( 'Trident /'); ;-)
Simon Steinberger

12
Benim versiyonum bir insan için çok daha mantıklı ama daha az bayt her zaman iyidir :)
Daniel Tonon

7
veyams_ie = !!ua.match(/MSIE|Trident/)
xori

5
veya ms_ie = /MSIE|Trident/.test(ua)
JohnnyFun

1
@SimonSteinberger'in ~herhangi bir önemi var mı?
1.21 gigawatts

45

Bu true, Internet Explorer'ın herhangi bir sürümü için döndürülür :

function isIE(userAgent) {
  userAgent = userAgent || navigator.userAgent;
  return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}

userAgentParametresi isteğe bağlıdır ve tarayıcının kullanıcı aracısı öntanımlıdır.


Bu iyi olmalı, ancak temel olarak IE tarayıcıları için varsayılan bir "doğru dönüş" veya "1 dönüş" değeri ayarlamayı unuttunuz. IE tarayıcıları algılandığında şu anda herhangi bir değer döndürülmemektedir.
Vincent Edward Gedaria Binua

10
Neden Edge'e IE olarak davranmak istersiniz? Uyumluluk açısından, günümüzde çok az ortak noktaları var.
minexew

@docta_faustus userAgent bir parametre değil, küresel bir
değerdir

29

Angularjs ekibi bunu yapıyor ( v 1.6.5 ):

var msie, // holds major version number for IE, or NaN if UA is not IE.

// Support: IE 9-11 only
/**
 * documentMode is an IE-only property
 * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
 */
msie = window.document.documentMode;

Sonra bir sayı olarak kullanarak boyunca dağılmış birkaç kod satırı vardır

if (event === 'input' && msie <= 11) return false;

ve

if (enabled && msie < 8) {

window.document.documentMode, MS Edge'de tanımlanmamış
Veselin Vasilev

25
MS Edge IE olmadığından MS Edge'de tanımsızdır!
JCKödel

1
document.documentModeIE8 + tarafından desteklenmektedir. Bu olacak 'undefined'... Kenardan veya Chrome / FireFox için. Bu kodu, var IEver = window.document.documentMode || (window.attachEvent? 1 : 99);IE8 + için tam IE sürümünü, IE olmayan tarayıcılar için 99 (genellikle modern bir tarayıcı olacaktır) ve eski IE5-7 için 1 döndürecek şekilde değiştirdim. Bu genellikle yazılır çünkü genellikle sadece bazı eski IE'ler için özel çalışmalara ihtiyacımız vardır. Yani, if (IEver < 9) { ... }eski bir IE ise anlamına gelir
S.Serpooshan

29

Kullanıcı gezginini algılamak için navigator nesnesini kullanabilirsiniz, bunun için jquery'ye ihtiyacınız yoktur

<script type="text/javascript">

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){ 

 // Do stuff with Internet-Exploders ... :)
}

</script>

http://www.javascriptkit.com/javatutors/navigator.shtml


4
Bu benim IE11 için sahte verir
Curtis

2
IE11'in kullanıcı aracısı MSIE (XX) 'den farklıdır; IE11'ler Trident kontrol edilerek bulunabilir.
Orpheus

Bu Firefox 45.0.2'de yanlış pozitif verir.
Tim

yanlış test indeksi Eğer test fonksiyonu regex gibi doğru veya yanlış döndürmezseniz navigator.userAgent.indexOf ("Trident /")! = -1
Dahar Youssef

10

Yukarıdaki cevapları kullanarak; basit ve yoğun dönen Boolean:

var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);


1
Widnows 10'daki FireFox 44.0.2'de false değerini döndürür. SiFni8'in hangi FireFox sürümü true döndürür?
Arthur Hebert

9

Yöntem 01:
$ .browser, jQuery sürüm 1.3'te kullanımdan kaldırıldı ve 1.9'da kaldırıldı

if ( $.browser.msie) {
  alert( "Hello! This is IE." );
}

Yöntem 02:
Koşullu Yorumları Kullanma

<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->

<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->

<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>

Yöntem 03:

 /**
 * Returns the version of Internet Explorer or a -1
 * (indicating the use of another browser).
 */
function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer')
    {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat( RegExp.$1 );
    }

    return rv;
}

function checkVersion()
{
    var msg = "You're not using Internet Explorer.";
    var ver = getInternetExplorerVersion();

    if ( ver > -1 )
    {
        if ( ver >= 8.0 ) 
            msg = "You're using a recent copy of Internet Explorer."
        else
            msg = "You should upgrade your copy of Internet Explorer.";
    }

    alert( msg );
}

Yöntem 04:
JavaScript / Manuel Algılamayı Kullanma

/*
     Internet Explorer sniffer code to add class to body tag for IE version.
     Can be removed if your using something like Modernizr.
 */
 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]);

     //append class to body for use with browser support
     if (v > 4)
     {
         $('body').addClass('ie' + v);
     }

 }());

Referans Bağlantısı


@radhe Bu sorunun sizin için çalışacağını umuyorum.
Aamir Shahzad

Not olarak: Yöntem 2 standart modda IE10 veya daha iyi çalışmaz. Daha fazla bilgi için: Koşullu yorumlar artık desteklenmiyor
insertusernameburada

@insertusernamehere çok haklısın, .ie10çünkü sadece ie10 için bazı css düzeltme yapıyorsanız sınıf kullanımı en iyi seçeneklerden biri olduğunu düşünüyorum . Internet explorer 10 ".ie10"HTML öğesine sınıf ekledikçe <html class="ie10">, bunu şu şekilde kullanabilirsiniz.ie10 .myclass {//some css here}
Aamir Shahzad

8

Sadece tarayıcının IE11 veya daha eski olup olmadığını kontrol etmek istedim, çünkü boklar.

function isCrappyIE() {
    var ua = window.navigator.userAgent;
    var crappyIE = false;
    var msie = ua.indexOf('MSIE ');
    if (msie > 0) {// IE 10 or older => return version number        
        crappyIE = true;
    }
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {// IE 11 => return version number        
        crappyIE = true;
    }
    return crappyIE;
}   

if(!isCrappyIE()){console.table('not a crappy browser);}

2
Bu, kongre standartlarını adlandırmak konusundaki yüksek saygısı için oyumu alır
redbandit

7
function detectIE() {
    var ua = window.navigator.userAgent;
    var ie = ua.search(/(MSIE|Trident|Edge)/);

    return ie > -1;
}

Soruya cevap vermiyor. Edge IE değil.
hda

hda, soru 2013 tarihleri, sanırım bugün, "Edge" görmezden değil ilginç
Boss COTIGA

5

Modernizr kullanma

Modernizr.addTest('ie', function () {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ') > 0;
    var ie11 = ua.indexOf('Trident/') > 0;
    var ie12 = ua.indexOf('Edge/') > 0;
    return msie || ie11 || ie12;
});

Edge IE olmadığı için soruyu cevaplamıyor. Ayrıca Edge IE12 değil. Chromium tabanlı Edge yayınlandığında, bu listeye Chrome veya Opera da eklemeniz gerekir. (Bununla ne elde etmek istersen, o zaman Firefox'u tespit etmek daha kolay olurdu)
hda

5

Veya bu gerçekten kısa sürüm, tarayıcılar Internet Explorer ise true değerini döndürür:

function isIe() {
    return window.navigator.userAgent.indexOf("MSIE ") > 0
        || !!navigator.userAgent.match(/Trident.*rv\:11\./);
}

4

Tarayıcının IE olup olmadığını tespit etmek için bir başka basit (henüz insan tarafından okunabilir) işlevi (hiç de fena değil Edge'i görmezden geliyor):

function isIE() {
  var ua = window.navigator.userAgent;
  var msie = ua.indexOf('MSIE '); // IE 10 or older
  var trident = ua.indexOf('Trident/'); //IE 11

  return (msie > 0 || trident > 0);
}

3

Useragent'ı kullanmak istemiyorsanız, bunu tarayıcının IE olup olmadığını kontrol etmek için de yapabilirsiniz. Yorumlanan kod aslında IE tarayıcılarda çalışır ve "false" ifadesini "true" değerine çevirir.

var isIE = /*@cc_on!@*/false;
if(isIE){
    //The browser is IE.
}else{
    //The browser is NOT IE.
}   

1
IE11 koşullu derlemeyi desteklemiyor
Gabriel Llamas

Sadece denedim ve hala çalıştı. Desteklemediğinden emin misiniz?
dev4life

3

Bu eski bir soru olduğunu biliyorum, ama herkes tekrar rastlamak ve IE11 tespit ile ilgili sorunları varsa, İşte IE tüm mevcut sürümleri için çalışan bir çözüm.

var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
    isIE = true;   
}

3

bunu kullandım

function notIE(){
    var ua = window.navigator.userAgent;
    if (ua.indexOf('Edge/') > 0 || 
        ua.indexOf('Trident/') > 0 || 
        ua.indexOf('MSIE ') > 0){
       return false;
    }else{
        return true;                
    }
}

2

Burada birçok cevap var ve girdilerimi eklemek istiyorum. IE 11, bir kullanıcının herhangi bir IE tarayıcısı (11'e kadar ve dahil) kullanıp kullanmadığını kontrol etmek için kolay bir yola ihtiyaç duyduğum için Flexbox ile ilgili bir eşek ( burada tüm sorunlarını ve tutarsızlıklarını buradan görebilirsiniz ) çok hoş.

Burada verilen cevaplara dayanarak, sonradan kullanabileceğiniz küresel bir boole değişkenini döndüren basit bir işlev yazdım. IE'yi kontrol etmek çok kolay.

var isIE;
(function() {
    var ua = window.navigator.userAgent,
        msie = ua.indexOf('MSIE '),
        trident = ua.indexOf('Trident/');

    isIE = (msie > -1 || trident > -1) ? true : false;
})();

if (isIE) {
    alert("I am an Internet Explorer!");
}

Bu şekilde, aramayı yalnızca bir kez yapmanız gerekir ve sonucu her işlev çağrısında almak yerine bir değişkende saklarsınız. (Bildiğim kadarıyla kullanıcı aracısı DOM ile ilgili olmadığından bu kodu yürütmeye hazır belgeyi beklemek zorunda bile değilsiniz.)


2

Jquery sürümü = = 1.9 kullanıyorsanız bunu deneyin ,

var browser;
jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) || 
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
       /(Trident)[\/]([\w.]+)/.exec(ua) || [];

    return {
        browser: match[1] || "",
        version: match[2] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[matched.browser] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}

Kullanılıyorsa jQuery sürümü <1.9 ($ .browser jQuery 1.9 çıkarıldı) şu kodu yerine kullanın:

$('.myClass').on('click', function (event) {
    if ($.browser.msie) {
        alert($.browser.version);
    }
});

Bunun için teşekkürler. Ne yazık ki hala 1.7.2 sürümündeyiz ve bunu değiştiremiyoruz.
user2571510

Görebildiğim kadarıyla, bu Trident motoruna dayanan yeni IE'leri hesaba katmıyor.
Bram Vanroy

Trident tabanlı son IE'ler için güncellendi
Rohan Kumar

1

@ SpiderCode'un çözümü IE 11 ile çalışmaz. İşte kodumda belirli bir özellik için tarayıcı algılamaya ihtiyaç duyduğum en iyi çözüm.

IE11 artık MSIE olarak rapor vermiyor, bu değişiklik listesine göre, yanlış tespitten kaçınmak kasıtlı.

Eğer gerçekten IE olduğunu bilmek istiyorsanız, navigator.appName (denenmemiş) gibi bir şey Netscape döndürürse kullanıcı ajanında Trident / string tespit etmektir;

Bu cevap için teşekkürler

function isIE()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  else if (navigator.appName == 'Netscape')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv == -1 ? false: true;
}

1

Aşağıda googling yaparken bunu yapmanın zarif bir yolunu buldum ---

/ detect IE
var IEversion = detectIE();

if (IEversion !== false) {
  document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
  document.getElementById('result').innerHTML = 'NOT IE';
}

// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;

/**
 * detect IE
 * returns version of IE or false, if browser is not Internet Explorer
 */
function detectIE() {
  var ua = window.navigator.userAgent;

  // Test values; Uncomment to check result …

  // IE 10
  // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';

  // IE 11
  // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';

  // IE 12 / Spartan
  // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';

  // Edge (IE 12+)
  // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';

  var msie = ua.indexOf('MSIE ');
  if (msie > 0) {
    // IE 10 or older => return version number
    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
  }

  var trident = ua.indexOf('Trident/');
  if (trident > 0) {
    // IE 11 => return version number
    var rv = ua.indexOf('rv:');
    return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
  }

  var edge = ua.indexOf('Edge/');
  if (edge > 0) {
    // Edge (IE 12+) => return version number
    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
  }

  // other browser
  return false;
}

1
Bu tam olarak bu soruya cevabımın bir parçası olan CodePen'deki kalemimden gelen kod . ;-)
Mario

1
Evet aynı kullandım ama yığın taşması insanlar bağlantı paylaşmak istemiyor. burada referans olarak bağlantıyı güncelleyecektir. Harika iş için teşekkürler Mario.
Rameshwar Vyevhare

1

'MSIE' dizesinin -1 döndürdüğü ancak 'Trident' ile eşleştiği sorunları gidermek için SpiderCode'un cevabı için güncelleme yapın. NAN döndürürdü, ancak şimdi IE'nin bu sürümü için 11 döndürür.

   function msieversion() {
       var ua = window.navigator.userAgent;
       var msie = ua.indexOf("MSIE ");
       if (msie > -1) {
           return ua.substring(msie + 5, ua.indexOf(".", msie));
       } else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
           return 11;
       } else {
           return false;
       }
    }

0

Tüm Internet Explorer'ı test edebilirsiniz (Son Sürüm Test Edildi 12).

<script>
    var $userAgent = '';
    if(/MSIE/i['test'](navigator['userAgent'])==true||/rv/i['test'](navigator['userAgent'])==true||/Edge/i['test'](navigator['userAgent'])==true){
       $userAgent='ie';
    } else {
       $userAgent='other';
    }

    alert($userAgent);
</script>

Buraya bakın https://jsfiddle.net/v7npeLwe/


0
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");

if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) { 
    // If Internet Explorer, return version numbe
    // You can do what you want only in IE in here.
    var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
    if (isNaN(version_number)) {
        var rv_index=ua.indexOf("rv:");
        version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
    }
    console.log(version_number);
} else {       
    //other browser   
    console.log('otherbrowser');
}
}

Sonucu konsolda görmelisiniz, lütfen chrome Inspect kullanın.


0

Bu kodu belgeye hazır fonksiyona yerleştirdim ve sadece internet explorer'da tetikleniyor. Internet Explorer 11'de test edilmiştir.

var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
    //Do internet explorer exclusive behaviour here
}

0

Bu yalnızca IE 11 sürümünün altında çalışır.

var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));

console.log("version number",ie_version);


0

Internet Explorer veya Edge sürümünü algılayan JavaScript işlevi

function ieVersion(uaString) {
  uaString = uaString || navigator.userAgent;
  var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
  if (match) return parseInt(match[2])
}

0

Necromancing.

Kullanıcı-aracı dizesine bağlı olmamak için birkaç özelliği kontrol etmeniz yeterlidir:

if (document.documentMode) 
{
    console.log('Hello Microsoft IE User!');
}

if (!document.documentMode && window.msWriteProfilerMark) {
    console.log('Hello Microsoft Edge User!');
}

if (document.documentMode || window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User!');
}

if (window.msWriteProfilerMark) 
{
    console.log('Hello Microsoft User in fewer characters!');
}

Ayrıca, bu yeni Chredge'i (Anaheim) algılar:

function isEdg()
{ 

    for (var i = 0, u="Microsoft", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

Ve bu kromu algılar:

function isChromium()
{ 

    for (var i = 0, u="Chromium", l =u.length; i < navigator.plugins.length; i++)
    {
        if (navigator.plugins[i].name != null && navigator.plugins[i].name.substr(0, l) === u)
            return true;
    }

    return false;
}

Ve bu Safari:

if(window.safari)
{
    console.log("Safari, yeah!");
}

-1

Böyle yapmayı dene

if ($.browser.msie && $.browser.version == 8) {
    //my stuff

}

jQuery bunu 1.3'te kullanımdan kaldırmış ve 1.9'da tamamen kaldırılmıştır.
geca

-1

Ben size yardımcı olacaktır düşünüyorum Burada

function checkIsIE() {
    var isIE = false;
    if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
        isIE = true;
    }
    if (isIE)  // If Internet Explorer, return version number
    {
        kendo.ui.Window.fn._keydown = function (originalFn) {
            var KEY_ESC = 27;
            return function (e) {
                if (e.which !== KEY_ESC) {
                    originalFn.call(this, e);
                }
            };
        }(kendo.ui.Window.fn._keydown);

        var windowBrowser = $("#windowBrowser").kendoWindow({
            modal: true,
            id: 'dialogBrowser',
            visible: false,
            width: "40%",
            title: "Thông báo",
            scrollable: false,
            resizable: false,
            deactivate: false,
            position: {
                top: 100,
                left: '30%'
            }
        }).data('kendoWindow');
        var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
        html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
        html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
        html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
        windowBrowser.content(html);
        windowBrowser.open();

        $("#windowBrowser").parent().find(".k-window-titlebar").remove();
    }
    else  // If another browser, return 0
    {
        return false;
    }
}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.