জাভাস্ক্রিপ্টে আইই সংস্করণ (v9 এর পূর্বে) সনাক্ত করুন


246

আমি যদি আমাদের ওয়েবসাইটের ব্যবহারকারীদের Internet Explorerভি 9 এর পূর্ববর্তী সংস্করণ ব্যবহার করে তবে তারা একটি ত্রুটি পৃষ্ঠায় বাউন্স করতে চাই । এটি সমর্থন করার জন্য কেবল আমাদের সময় এবং অর্থের মূল্য নয় IE pre-v9। অন্যান্য সমস্ত নন-আইই ব্রাউজারের ব্যবহারকারীরা ভাল আছেন এবং বাউন্স করা উচিত নয়। প্রস্তাবিত কোডটি এখানে:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}

এই কোডটি কৌতুক করবে?

কয়েকটি মন্তব্য সম্ভবত যা আমার পথে আসবে তাড়াতে:

  1. হ্যাঁ, আমি জানি যে ব্যবহারকারীরা তাদের useragentস্ট্রিং জালিয়াতি করতে পারেন । আমি উদ্বিগ্ন নই
  2. হ্যাঁ, আমি জানি যে প্রোগ্রামিং পেশাদাররা ব্রাউজার-ধরণের পরিবর্তে বৈশিষ্ট্য-সমর্থনকে স্নিগ্ধ করা পছন্দ করে তবে আমি মনে করি না যে এই পদ্ধতিকে এই ক্ষেত্রে সার্থক করে তোলে। আমি ইতিমধ্যে জানি যে সমস্ত (প্রাসঙ্গিক) নন-আইই ব্রাউজারগুলি আমার প্রয়োজনীয় বৈশিষ্ট্যগুলি সমর্থন করে এবং সমস্ত pre-v9 IEব্রাউজারগুলি তা সমর্থন করে না। সাইট জুড়ে বৈশিষ্ট্য অনুসারে বৈশিষ্ট্য পরীক্ষা করা ব্যর্থ হবে।
  3. হ্যাঁ, আমি জানি যে কেউ IE v1(বা> = 20) ব্যবহার করে সাইটে অ্যাক্সেস করার চেষ্টা করছেন তিনি 'ব্যাডব্রোজার' সেট করতে পারবেন না এবং সতর্কতা পৃষ্ঠাটি সঠিকভাবে প্রদর্শিত হবে না। এটি আমরা ঝুঁকি নিতে ইচ্ছুক।
  4. হ্যাঁ, আমি জানি যে মাইক্রোসফ্টের "শর্তসাপেক্ষ মন্তব্য" রয়েছে যা সুনির্দিষ্ট ব্রাউজার সংস্করণ সনাক্তকরণের জন্য ব্যবহার করা যেতে পারে। IE 10এই পদ্ধতিটি একেবারেই অকেজো বলে উপস্থাপন করে আইআই আর শর্তযুক্ত মন্তব্যগুলিকে সমর্থন করে না ।

অন্য কোন সুস্পষ্ট বিষয় সম্পর্কে সচেতন হতে হবে?


122
"IE প্রাক-ভি 9 সমর্থন করার জন্য এটি আমাদের সময় এবং অর্থের উপযুক্ত নয়"। আমি যদি এটা করতে পারতাম।
হাসান

2
বিন্দুর উপর ভিত্তি করে [২] আমি মডারিনিজারকে প্রস্তাব দেব না (
এন.ইউইউইকিপিডিয়া.আর

1
শর্তাধীন মন্তব্যগুলি কেবলমাত্র সাধারণ মন্তব্য। কেবল আইই তাদের বিশেষ বিশেষ হিসাবে ব্যাখ্যা করে। IE10 + এটি আর করবে না।
Andreas

3
শর্তাধীন মন্তব্যগুলি আইই 10 দ্বারা নন-আইই ব্রাউজার হিসাবে ঠিক একই আচরণ করা হবে। এগুলি বৈধ এইচটিএমএল মন্তব্য তাই এরূপ হিসাবে বিবেচিত হবে। আমি আন্ড্রেয়াসের সাথে একমত এবং শর্তসাপেক্ষ মন্তব্যগুলি যাওয়ার উপায় বলে মনে করি।
টিম ডাউন

1
সরকারী ডকুমেন্টেশন বলছেন যে IE10 + + শর্তাধীন মন্তব্য সমর্থন করবে না: blogs.msdn.com/b/ie/archive/2011/07/06/... - ধন্যবাদ: stackoverflow.com/a/9900331/320399
blong

উত্তর:


354

এটি করা আমার পছন্দসই উপায়। এটি সর্বাধিক নিয়ন্ত্রণ দেয়। (দ্রষ্টব্য: শর্তাধীন বিবৃতি কেবল আই 5 - 9 এ সমর্থিত)

প্রথমে আপনার ie ক্লাসগুলি সঠিকভাবে সেট আপ করুন

<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>    <html class="lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>    <html class="lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->    
<head>

তারপরে আপনি স্টাইল ব্যতিক্রম করতে কেবল সিএসএস ব্যবহার করতে পারেন বা আপনার প্রয়োজন হলে আপনি কিছু সাধারণ জাভাস্ক্রিপ্ট যুক্ত করতে পারেন:

(function ($) {
    "use strict";

    // Detecting IE
    var oldIE;
    if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
        oldIE = true;
    }

    if (oldIE) {
        // Here's your JS for IE..
    } else {
        // ..And here's the full-fat code for everyone else
    }

}(jQuery));

ধন্যবাদ পল আইরিশ


21
ওপি একটি নিখুঁতভাবে জাভাস্ক্রিপ্ট সমাধানের জন্য বলেছে, আমি বিশ্বাস করি যে নীচে @ টিম ডাউন দ্বারা উত্তরটি আরও ভাল, কারণ এতে বিদ্যমান এইচটিএমএল পরিবর্তন করা জড়িত না, এবং এটি jQuery ব্যবহার করছে না: stackoverflow.com/a/10965203/134120
AsGoodAsItGates

আমি Error: Saw <!-- within a comment. Probable cause: Nested comment (not allowed). At line 5, column 21 if gt IE 8]><!--><html
ডাব্লু 3

161

আইই সংস্করণটি রিটার্ন করুন বা আইই না হলে মিথ্যা প্রত্যাবর্তন করুন

function isIE () {
  var myNav = navigator.userAgent.toLowerCase();
  return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}

উদাহরণ:

if (isIE () == 8) {
 // IE8 code
} else {
 // Other versions IE or not IE
}

অথবা

if (isIE () && isIE () < 9) {
 // is IE version less than 9
} else {
 // is IE 9 and later or not IE
}

অথবা

if (isIE()) {
 // is IE
} else {
 // Other browser
}

36
আইই 11 এর জন্য কাজ করে না। আইই 11 থেকে তারা ইউএ স্ট্রিং পরিবর্তন করেছে"mozilla/5.0 (windows nt 6.3; wow64; trident/7.0; .net4.0e; .net4.0c; media center pc 6.0; .net clr 3.5.30729; .net clr 2.0.50727; .net clr 3.0.30729; rv:11.0) like gecko"
অ্যানি

22
দয়া করে নোট করুন যে এফএফ "মিথ্যা <9" "সত্য"। সুতরাং, শর্তটি হওয়া উচিতif (isIE () && isIE () < 9) {
nZeus

3
@ ডেডলিচ্যাম্বারস সম্ভবত এটি আই 7 মানক মোডে চলছিল? msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
mason81

4
অনুমোদিত উত্তরটি হ'ল এইচটিএমএলে কীভাবে আই সংস্করণ সনাক্ত করা যায়। এটি মূল প্রশ্নের উত্তর দেয়।
ম্যাট ওয়াগনার

2
@ প্রসাদগায়ান - মাইক্রোসফ্ট এজ ইন্টারনেট এক্সপ্লোরার নয়। সুতরাং মিথ্যা প্রত্যাবর্তন এটি করার সঠিক জিনিস বলে মনে হচ্ছে।
ব্রায়ানগ্রিজসাকাক

120

অন্য কেউ যদি addEventListerআদর্শবাদী না জুড়ে থাকে এবং আপনি সঠিক ব্রাউজার মোড ব্যবহার করছেন তবে আপনি IE 8 বা তার চেয়ে কম এর জন্য পরীক্ষা করতে পারেন

if (window.attachEvent && !window.addEventListener) {
    // "bad" IE
}

লিগ্যাসি ইন্টারনেট এক্সপ্লোরার এবং সংযুক্তি (এমডিএন)


7
এটি পুরোপুরি জাভাস্ক্রিপ্টে আইআই <= 8 সনাক্ত করার সবচেয়ে কার্যকরী উপায় বলে মনে হচ্ছে - এবং আমার মতো লোকেরা যারা এটি করার উপায় খুঁজছিল তাদের পক্ষে দুর্দান্ত।
গ্রেগরি মাগারশাক

গ্রেট! এটি কুইর্কস মোডে আই 99 সনাক্ত করে যা আমি যা খুঁজছিলাম।
স্টিস্তর

7
যদিও এটি "ব্যবহার করা সহজ" সমাধান তবে এর কিছু ঝুঁকি রয়েছে। আপনার সংস্থার যে কেউ (এটি আপনার সমাধান সম্পর্কে অবগত নয়) IE 8 এ এর ​​অভাব মোকাবেলা করতে "addEventListener" বা "সংযুক্তি" প্রয়োগ করতে পারে এবং তারপরে, আপনার কোড কাজ বন্ধ করে দেবে।
Zé কার্লোস

@ রোইনামির আইই 8-এর জন্য এই পরীক্ষাগুলি করে। কেন পৃথিবীতে আইই 11 এ সত্য হওয়া উচিত?
Andreas

পছন্দ করুন আপনি দেখতে পাচ্ছেন না যে ওপেন আই 9 এর আগে চায়। মোছা হচ্ছে।
রই নমির

114

শর্তসাপেক্ষ মন্তব্য ব্যবহার করুন। আপনি IE <9 এর ব্যবহারকারীদের সনাক্ত করার চেষ্টা করছেন এবং শর্তসাপেক্ষ মন্তব্যগুলি সেই ব্রাউজারগুলিতে কাজ করবে; অন্যান্য ব্রাউজারগুলিতে (IE> = 10 এবং নন-আইই), মন্তব্যগুলি সাধারণ এইচটিএমএল মন্তব্য হিসাবে বিবেচিত হবে, যা সেগুলি।

এইচটিএমএল উদাহরণ:

<!--[if lt IE 9]>
WE DON'T LIKE YOUR BROWSER
<![endif]-->

আপনার যদি প্রয়োজন হয় তবে আপনি খালি স্ক্রিপ্টের মাধ্যমেও এটি করতে পারেন:

var div = document.createElement("div");
div.innerHTML = "<!--[if lt IE 9]><i></i><![endif]-->";
var isIeLessThan9 = (div.getElementsByTagName("i").length == 1);
if (isIeLessThan9) {
    alert("WE DON'T LIKE YOUR BROWSER");
}

5
@ টিম ডাউন এর উত্তরের জাভাস্ক্রিপ্ট সংস্করণটি আমার পক্ষে দুর্দান্ত কাজ করেছে। আমি এটি উইন্ডোজ 7 এবং আই 8, 9, 10 এবং 11 দিয়ে পরীক্ষা করার জন্য ব্রাউজারস্ট্যাক ব্যবহার করেছি; সাফারি 5.1, ফায়ারফক্স 28.0, ক্রোম 33.0 এবং অপেরা 20.0 সহ ম্যাক ওএস এক্স স্নো লেপার্ড; আইফোন 5 মোবাইল সাফারি; এবং অ্যান্ড্রয়েড স্যামসং গ্যালাক্সি ট্যাব 2 10.1 4.0। যেমনটি প্রত্যাশা করা হয়েছিল, কেবলমাত্র আইই 8 জানিয়েছে যে এটি আইলেসথ্যান 9। নিস!
স্টিভ সাপোর্টা

58

এমএসআইই (v6 - v7 - v8 - v9 - v10 - v11) সহজে সনাক্ত করতে:

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

আইই 10 সনাক্তকরণের জন্য দরকারী, কারণ এটি শর্তাধীন মন্তব্যগুলিকে সমর্থন করে না। আইই 11 এ কাজ করে না, তবে আইই 11 এর সাধারণত একটি ঠিক আচরণ হয়
personne3000

11
পরিশেষে এমন একটি উত্তর যা বৈশিষ্ট্য সনাক্তকরণ ব্যবহার সম্পর্কে বক্তৃতা দেয় না এবং আসলে প্রশ্নের উত্তর দেয়।
সিডিএমকেই

32

এখানে AngularJS IE এর জন্য যাচাই করে

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

if (msie < 9) {
    // code for IE < 9
}

বাহ এই সমস্ত শর্তাধীন মন্তব্য চেয়ে অনেক সহজ! এর কোন সীমাবদ্ধতা নেই?
অ্যান্ড্রুব

দস্তাবেজ অনুসারে, IE8 + এই সম্পত্তিটিকে সমর্থন করে তাই আমি মনে করি বেশিরভাগ ক্ষেত্রেই যথেষ্ট হওয়া উচিত।
আইউরি

এমএসডিএন রেফারেন্স অনুসারে, "যখন বর্তমান নথিটি এখনও নির্ধারণ করা হয়নি, ডকুমেন্টমোড শূন্য (0) এর মান প্রদান করে। এটি সাধারণত ডকুমেন্ট লোড করার সময় ঘটে।" এর অর্থ কি আপনি <হেড> লোড হওয়া কোনও স্ক্রিপ্টের মধ্যে বৈধ প্রতিক্রিয়া পেতে পারেন না?
এরিক নোলস

আমি মনে করি আপনি যখন ডকুমেন্টটি লোড হয়ে গেছে তখন উইন্ডো.নলোডের মান পরীক্ষা করে এটি ঠিক করতে পারবেন can
আইউরি

28

নির্ভরযোগ্যভাবে IE8 এবং আরও পুরানো ফিল্টার করতে, বিশ্বব্যাপী অবজেক্টগুলি পরীক্ষা করা ব্যবহার করা যেতে পারে:

if (document.all && !document.addEventListener) {
    alert('IE8 or lower');
}

2
ডকুমেন্ট.ল - আইই 11-তে সমর্থিত নয় - msdn.microsoft.com/en-us/library/ie/ms537434%28v=vs.85%29.aspx
রাজা খুরি

2
@ রাজাখৌরি - আইই <9 এর জন্য পরীক্ষার চেষ্টা করাতে কোনটি ভাল - যদি শর্তটি মিথ্যা হবে।
nnnnnn

19

বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করে IE সংস্করণ সনাক্তকরণ (আই 6+, আই 6 এর পূর্বে ব্রাউজারগুলি 6 হিসাবে সনাক্ত করা হয়, নন-আইই ব্রাউজারগুলির জন্য নাল ফেরায়):

var ie = (function (){
    if (window.ActiveXObject === undefined) return null; //Not IE
    if (!window.XMLHttpRequest) return 6;
    if (!document.querySelector) return 7;
    if (!document.addEventListener) return 8;
    if (!window.atob) return 9;
    if (!document.__proto__) return 10;
    return 11;
})();

সম্পাদনা করুন: আমি আপনার সুবিধার জন্য একটি বোর / এনপিএম রেপো তৈরি করেছি: অর্থাত্ সংস্করণ

হালনাগাদ:

আরও কমপ্যাক্ট সংস্করণটি এক লাইনে লেখা যেতে পারে:

return window.ActiveXObject === undefined ? null : !window.XMLHttpRequest ? 6 : !document.querySelector ? 7 : !document.addEventListener ? 8 : !window.atob ? 9 : !document.__proto__ ? 10 : 11;

16

এই ফাংশনটি পূর্ণসংখ্যার হিসাবে, বা undefinedব্রাউজার যদি ইন্টারনেট এক্সপ্লোরার না হয় তবে আইই মেজর সংস্করণ নম্বরটি ফিরিয়ে দেবে । এটি, সমস্ত ব্যবহারকারীর এজেন্ট সমাধানগুলির মতোই, ব্যবহারকারী এজেন্ট স্পোফিংয়ের ক্ষেত্রেও গ্রহণযোগ্য (যা সংস্করণ 8 এর পরে আই-র একটি অফিশিয়াল বৈশিষ্ট্য হয়ে দাঁড়িয়েছে)।

function getIEVersion() {
    var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:)(\d+)/);
    return match ? parseInt(match[1]) : undefined;
}

ওহে, বাস্তবে কেউ কীভাবে এটি ব্যবহার করে? কীভাবে কেউ ফেরতের মান পুনরুদ্ধার করতে পারে? আমি চেষ্টা করেছিলাম console.log(!!match && parseInt(match[1])), console.log(parseInt(match[1]))এবং console.log(match), তবে তাদের কোনওটির সাথেই কোনও ফল হয়নি।
ফ্র্যাঙ্ক কনিজন

ফাংশনটি নিজেই কল করে রিটার্ন মান পান getIEVersion()। উদাহরণস্বরূপ:if (getIEVersion() < 9) {/* IE 8 or below */} if (!getIEVersion()) {/* Not IE */}
ওয়েন

15

শর্তসাপেক্ষ মন্তব্য ব্যবহার করে জেএস-এ আইই সনাক্ত করুন

// ----------------------------------------------------------
// 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;

}());

এটা আমার উত্তর মত একই।
টিম ডাউন

@ টিমডাউন: সম্ভবত, তবে এই উত্তরটি আরও কিছুটা বৈশিষ্ট্য-সম্পূর্ণ (এটি আপনাকে সংস্করণ নম্বরটি বলে), এবং ভাল মন্তব্য করা হয়েছে। তদতিরিক্ত, এই উত্তরের শুরুতে লিঙ্কটি এই কৌশলটিতে বিভিন্ন তথ্যবহুল মন্তব্য এবং আকর্ষণীয় বৈচিত্র সহ একটি গিস্টকে নিয়ে যায়।
অ্যালান

@ অ্যালান: ফেয়ার পয়েন্টস আমি আমার প্রশ্নটি তৈরি করেছিলাম তবে উত্সটি উদ্ধৃত করিনি।
টিম ডাউন

12

এটি আমার পক্ষে কাজ করে। আমি এটিকে কোনও পৃষ্ঠায় পুনঃনির্দেশ হিসাবে ব্যবহার করি যা আমাদের <আই 99 পছন্দ করে না এবং আমাদের পছন্দমতো ব্রাউজারগুলির লিঙ্ক সরবরাহ করে কেন তা ব্যাখ্যা করে।

<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;URL=http://google.com">
<![endif]-->

1
ওহ, এটি একটি বাজে। আমি আরও বন্ধুত্বপূর্ণ পদ্ধতি ব্যবহার করি, আইই সতর্কতার বর্ণনার
কোডবিট

10

আপনার কোডটি চেকটি করতে পারে, তবে যেমন আপনি ভেবেছিলেন, কেউ যদি আই ভি 1 বা> ভি 19 ব্যবহার করে আপনার পৃষ্ঠাটি অ্যাক্সেস করার চেষ্টা করে ত্রুটিটি পাবে না, তবে নীচের কোডটির মতোই রেগেক্স এক্সপ্রেশন দিয়ে আরও নিরাপদে চেক করতে পারেন:

var userAgent = navigator.userAgent.toLowerCase();
// Test if the browser is IE and check the version number is lower than 9
if (/msie/.test(userAgent) && 
    parseFloat((userAgent.match(/.*(?:rv|ie)[\/: ](.+?)([ \);]|$)/) || [])[1]) < 9) {
  // Navigate to error page
}

এটি একটি ভাল উত্তর নয়। ইউএ-স্নিফিং অবিশ্বাস্য। এখানে আরও: আধুনিক
izr.com

3
@ জিজেন কখনও কখনও ইউএ-স্নিফিংয়ের পথে চলে যান: github.com/Modernizr/Modernizr/issues/538
István

8

মাইক্রোসফ্ট রেফারেন্স পৃষ্ঠায় উল্লিখিত সংস্করণ 10 অনুযায়ী শর্তাধীন মন্তব্যগুলি আর সমর্থিত নয় ।

var ieDetector = function() {
  var browser = { // browser object

      verIE: null,
      docModeIE: null,
      verIEtrue: null,
      verIE_ua: null

    },
    tmp;

  tmp = document.documentMode;
  try {
    document.documentMode = "";
  } catch (e) {};

  browser.isIE = typeof document.documentMode == "number" || eval("/*@cc_on!@*/!1");
  try {
    document.documentMode = tmp;
  } catch (e) {};

  // We only let IE run this code.
  if (browser.isIE) {
    browser.verIE_ua =
      (/^(?:.*?[^a-zA-Z])??(?:MSIE|rv\s*\:)\s*(\d+\.?\d*)/i).test(navigator.userAgent || "") ?
      parseFloat(RegExp.$1, 10) : null;

    var e, verTrueFloat, x,
      obj = document.createElement("div"),

      CLASSID = [
        "{45EA75A0-A269-11D1-B5BF-0000F8051515}", // Internet Explorer Help
        "{3AF36230-A269-11D1-B5BF-0000F8051515}", // Offline Browsing Pack
        "{89820200-ECBD-11CF-8B85-00AA005B4383}"
      ];

    try {
      obj.style.behavior = "url(#default#clientcaps)"
    } catch (e) {};

    for (x = 0; x < CLASSID.length; x++) {
      try {
        browser.verIEtrue = obj.getComponentVersion(CLASSID[x], "componentid").replace(/,/g, ".");
      } catch (e) {};

      if (browser.verIEtrue) break;

    };
    verTrueFloat = parseFloat(browser.verIEtrue || "0", 10);
    browser.docModeIE = document.documentMode ||
      ((/back/i).test(document.compatMode || "") ? 5 : verTrueFloat) ||
      browser.verIE_ua;
    browser.verIE = verTrueFloat || browser.docModeIE;
  };

  return {
    isIE: browser.isIE,
    Version: browser.verIE
  };

}();

document.write('isIE: ' + ieDetector.isIE + "<br />");
document.write('IE Version Number: ' + ieDetector.Version);

তারপরে ব্যবহার করুন:

if((ieDetector.isIE) && (ieDetector.Version <= 9))
{

}

1
এটিই কেবলমাত্র পুরো নেটটিতে কাজ করেছিল, আমি চেষ্টা করেছি এমন কমপক্ষে হুমংাস ... thx;)
হেনরিক সি।

এই কোডটি ভাল, তবে সামঞ্জস্যতা দর্শন মোডটি সনাক্ত করতে পারে না। আমি আইই 8 তে আই 8 তে সামঞ্জস্যতা ভিউ ব্যবহার করছি এবং এই কোডটি এখনও version 11সম্পাদনা দিচ্ছে : এই কোডটি আশ্চর্যজনক! হাহাহা, এটি ভিতরে সমস্ত কিছু দিয়ে একটি বস্তু দেয়। সংস্করণটি 11 তবে ডকোমোডিআইআর সমান 9. ধন্যবাদ!
মার্সেলো বারবোসা

5

10 এবং 11 এর জন্য:

শর্তসাপেক্ষ মন্তব্যের মান বজায় রাখতে আপনি জেএসএস ব্যবহার করতে এবং এইচটিএমএলে একটি ক্লাস যুক্ত করতে পারেন :

  var ua = navigator.userAgent,
      doc = document.documentElement;

  if ((ua.match(/MSIE 10.0/i))) {
    doc.className = doc.className + " ie10";

  } else if((ua.match(/rv:11.0/i))){
    doc.className = doc.className + " ie11";
  }

বা বোসারের মতো একটি ব্যবহার করুন:

https://github.com/ded/bowser

বা বৈশিষ্ট্য সনাক্তকরণের জন্য আধুনিকীকরণকারী:

http://modernizr.com/


2
আমি কয়েকটি স্ক্রিপ্ট এবং সমাধান চেষ্টা করেছি কিন্তু কিছুই কার্যকর হয়নি। তারপরে আমি প্রজেক্টে বাউজারকে অন্তর্ভুক্ত করেছি এবং এটি ঠিক কাজ করেছে worked সুতরাং একটি ধনুক পরামর্শ দেওয়ার জন্য।
মোল্ডে

3

ইন্টারনেট এক্সপ্লোরার 10 | 11 সনাক্ত করতে আপনি বডি ট্যাগের পরে অবিলম্বে এই ছোট স্ক্রিপ্টটি ব্যবহার করতে পারেন:

আমার ক্ষেত্রে আমি jQuery লাইব্রেরি মাথার মধ্যে ব্যবহার করি।

<!DOCTYPE HTML>
<html>
<head>
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
    <script>if (navigator.appVersion.indexOf('Trident/') != -1) $("body").addClass("ie10");</script>
</body>
</html>

আমি এই ধন্যবাদটি পছন্দ করি, পূর্ববর্তী সংস্করণগুলি সমর্থন না করায় আমার কেবল 10 বা 11 সনাক্ত করতে হবে
নিকটস্থ

আইই 9 টিও ত্রিশূল কিন্তু সিএসএস সমর্থনের সাথে এক নয়। আপনার সনাক্তকরণটি কমপক্ষে 10 বলে মনে করে তবে এটি সঠিক নয়।
কোডবিট

3

এটি মৃত্যুর জবাব দেওয়া হয়েছে, তবে এটি আপনার প্রয়োজন।

!!navigator.userAgent.match(/msie\s[5-8]/i)

এছাড়াও, এখানে একটি স্যান্ডবক্স রয়েছে যা সর্বাধিক সাধারণ IE ব্যবহারকারী এজেন্ট স্ট্রিংয়ের বিরুদ্ধে রেজেক্স প্যাটার্ন দেখায়
টিমোথি পেরেজ

@ আলেস্যাড্রো - তবে এটি অনুমিত, তাই না? ওপি <9 ...
nnnnnn

2
var Browser = new function () {
    var self = this;
    var nav = navigator.userAgent.toLowerCase();
    if (nav.indexOf('msie') != -1) {
        self.ie = {
            version: toFloat(nav.split('msie')[1])
        };
    };
};


if(Browser.ie && Browser.ie.version > 9)
{
    // do something
}

2

মাইক্রোসফ্টের মতে , নিম্নলিখিতটি সর্বোত্তম সমাধান হ'ল এটিও খুব সহজ:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
    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 );
}

প্রকৃতপক্ষে, এবং কেবলমাত্র এখানে অন্য কেউ যদি উপরেরটি ব্যবহার করার চেষ্টা করে তবে পরবর্তী উত্তরে কোডটি আইই 11 এর জন্য কাজ করে ( স্ট্যাকওভারফ্লো . com/ a/26375930/ 1129926 )। তবে সাবধান, এটি IE12 ইত্যাদির জন্য কি কাজ করবে? এগুলিকে অস্থায়ী হ্যাক হিসাবে বিবেচনা করার জন্য নীচের লাইনটি সেরা এবং এগুলি পরবর্তীকালে নতুন ব্রাউজার সংস্করণ প্রকাশ হওয়ার সাথে সাথে ব্যর্থ হওয়ার সম্ভাবনা রয়েছে (আমি এজটির উল্লেখও করব না)।
জেফ মার্লেগার 21 এ 17

1

আমি এই কোডটি অদ্বিতীয়বারের জন্য পুনর্লিখন না করার পরামর্শ দিতে যাচ্ছি। আমি আপনাকে কন্ডিশনিজার লাইব্রেরি ব্যবহার করার পরামর্শ দিচ্ছি ( http://conditionizr.com/ ) যা নির্দিষ্ট আই সংস্করণগুলির পাশাপাশি অন্যান্য ব্রাউজারগুলি, অপারেটিং সিস্টেমগুলি এবং এমনকি রেটিনা প্রদর্শনগুলির উপস্থিতি বা অনুপস্থিতির জন্য পরীক্ষা করতে সক্ষম।

আপনার প্রয়োজনীয় নির্দিষ্ট পরীক্ষাগুলির জন্য কোড অন্তর্ভুক্ত করুন এবং আপনি পরীক্ষিত লাইব্রেরির সুবিধাও অর্জন করতে পারেন যা বহু পুনরাবৃত্তির মধ্য দিয়ে চলেছে (এবং যা আপনার কোডটি না ভেঙে আপগ্রেড করা সহজ হবে)।

এটি মডার্নিজারের সাথে দুর্দান্তভাবে জড়িয়ে পড়ে যা আপনি সেই নির্দিষ্ট ক্ষেত্রে পরিচালনা করতে পারেন যেখানে আপনি নির্দিষ্ট ব্রাউজারের চেয়ে নির্দিষ্ট সক্ষমতা অর্জনের জন্য পরীক্ষা করা ভাল cases


1

আমি এরকম করি:

<script>
   function isIE () {
       var myNav = navigator.userAgent.toLowerCase();
       return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
   }    
   var ua = window.navigator.userAgent;
   //Internet Explorer | if | 9-11

   if (isIE () == 9) {
       alert("Shut down this junk! | IE 9");
   } else if (isIE () == 10){
       alert("Shut down this junk! | IE 10");
   } else if (ua.indexOf("Trident/7.0") > 0) {
       alert("Shut down this junk! | IE 11");
   }else{
       alert("Thank god it's not IE!");
   }

</script>

1

আইআই শনাক্ত করার এই পদ্ধতির সাথে শক্তির সংমিশ্রণ ঘটে এবং শর্তসাপেক্ষ মন্তব্যগুলি এবং ব্যবহারকারী এজেন্ট ব্যবহার করে ওভেনের উত্তর ব্যবহার করে জেকি'র উত্তরের দুর্বলতাগুলি এড়ানো হয়।

  • jKey এর পদ্ধতির 9 সংস্করণ 9 পর্যন্ত কাজ করে এবং IE 8 এবং 9 তে ব্যবহারকারী এজেন্টের স্পোফিংয়ের প্রতিরোধক।
  • ওভেনের দৃষ্টিভঙ্গি আইই 5 এবং 6 (7 এর প্রতিবেদন করা) এ ব্যর্থ হতে পারে এবং ইউএ স্পোফিংয়ের পক্ষে সংবেদনশীল তবে এটি আইই সংস্করণগুলি> = 10 সনাক্ত করতে পারে (এখন 12 সহ, যা ওভেনের উত্তর পোস্ট করে)।

    // ----------------------------------------------------------
    // A short snippet for detecting versions of IE
    // ----------------------------------------------------------
    // If you're not in IE (or IE version is less than 5) then:
    //     ie === undefined
    // Thus, to detect IE:
    //     if (ie) {}
    // And to detect the version:
    //     ie === 6 // IE6
    //     ie > 7 // IE8, IE9 ...
    // ----------------------------------------------------------
    var ie = (function(){
        var v = 3,
            div = document.createElement('div'),
            all = div.getElementsByTagName('i');
    
        while (
            div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
            all[0]
        );
        if (v <= 4) { // Check for IE>9 using user agent
            var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:|Edge\/)(\d+)/);
            v = match ? parseInt(match[1]) : undefined;
        }
        return v;
    }());

এটি আইই সংস্করণযুক্ত আপনার দস্তাবেজে দরকারী ক্লাস সেট করতে ব্যবহার করা যেতে পারে:

    if (ie) {
        document.documentElement.className += ' ie' + ie;
        if (ie < 9)
            document.documentElement.className += ' ieLT9';
    }

মনে রাখবেন যে আইই যদি সামঞ্জস্যতা মোডে থাকে তবে এটি ব্যবহারযোগ্য সামঞ্জস্যতা মোডটি সনাক্ত করে। এছাড়াও নোট করুন যে আইই সংস্করণটি পুরানো সংস্করণগুলির জন্য বেশিরভাগই কার্যকর (<10); উচ্চতর সংস্করণগুলি আরও মান-সম্মতিযুক্ত এবং পরিবর্তে মডার্নিজার.জেস এর মতো কিছু ব্যবহার করে বৈশিষ্ট্যগুলি পরীক্ষা করা আরও ভাল।


1

আমি এটির জন্য একটি সুবিধাজনক আন্ডারস্কোর মিশ্রণ তৈরি করেছি।

_.isIE();        // Any version of IE?
_.isIE(9);       // IE 9?
_.isIE([7,8,9]); // IE 7, 8 or 9?

_.mixin({
  isIE: function(mixed) {
    if (_.isUndefined(mixed)) {
      mixed = [7, 8, 9, 10, 11];
    } else if (_.isNumber(mixed)) {
      mixed = [mixed];
    }
    for (var j = 0; j < mixed.length; j++) {
      var re;
      switch (mixed[j]) {
        case 11:
          re = /Trident.*rv\:11\./g;
          break;
        case 10:
          re = /MSIE\s10\./g;
          break;
        case 9:
          re = /MSIE\s9\./g;
          break;
        case 8:
          re = /MSIE\s8\./g;
          break;
        case 7:
          re = /MSIE\s7\./g;
          break;
      }

      if (!!window.navigator.userAgent.match(re)) {
        return true;
      }
    }

    return false;
  }
});

console.log(_.isIE());
console.log(_.isIE([7, 8, 9]));
console.log(_.isIE(11));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>


1

বা সহজভাবে

//   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'; 
// Edge 12: 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 13: 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 isIE = navigator.userAgent.match(/MSIE|Trident|Edge/)
var IEVersion = ((navigator.userAgent.match(/(?:MSIE |Trident.*rv:|Edge\/)(\d+(\.\d+)?)/)) || []) [1]

0

আইই এর সংস্করণগুলি যাচাই করার জন্য আমি সবচেয়ে বিস্তৃত জেএস স্ক্রিপ্টটি পেয়েছি হ'ল http://www.pinlady.net/PluginDetect/IE/ । পুরো লাইব্রেরিটি http://www.pinlady.net/ প্লাগইন সনাক্তকরণ / ব্রাউজার্সে রয়েছে

আইই 10 সহ, শর্তাধীন বিবৃতিগুলি আর সমর্থিত নয়।

আইই 11 এর সাথে, ব্যবহারকারী এজেন্টের আর এমএসআইই থাকে না। এছাড়াও, ব্যবহারকারীর এজেন্ট ব্যবহার করা নির্ভরযোগ্য নয় কারণ এটি পরিবর্তন করা যেতে পারে।

প্লাগইন ডিটেক্ট জেএস স্ক্রিপ্ট ব্যবহার করে আপনি IE এর জন্য সনাক্ত করতে পারেন এবং নির্দিষ্ট IE সংস্করণগুলিকে লক্ষ্যবস্তু করে এমন খুব সুনির্দিষ্ট এবং ভাল-রচিত কোড ব্যবহার করে সঠিক সংস্করণগুলি সনাক্ত করতে পারেন। আপনি যখন ব্রাউজারের ঠিক কী সংস্করণ নিয়ে কাজ করছেন সেদিকে খেয়াল রাখলে এটি খুব কার্যকর।


0

আমি বুঝতে পারি যে আমি এখানে পার্টিতে কিছুটা দেরি করেছি, তবে আমি ব্রাউজারের আইই কিনা এবং এটির 10 থেকে কোন সংস্করণ ছিল কিনা সে সম্পর্কে প্রতিক্রিয়া জানাতে একটি সাধারণ একটি লাইন উপায় পরীক্ষা করে দেখছিলাম। আমি এটি সংস্করণ 11 এর জন্য কোড করে নেই, তাই সম্ভবত এটির জন্য সামান্য সংশোধনীর প্রয়োজন হবে।

তবে এটি কোড, এটি এমন একটি বস্তু হিসাবে কাজ করে যার একটি সম্পত্তি এবং একটি পদ্ধতি রয়েছে এবং নেভিগেটর অবজেক্টটি স্ক্র্যাপ করার পরিবর্তে বস্তু সনাক্তকরণের উপর নির্ভর করে (যা এটি ছদ্মবেশী হওয়ার কারণে ব্যাপকভাবে ত্রুটিযুক্ত)।

var isIE = { browser:/*@cc_on!@*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };

ব্যবহার এমন isIE.browserএকটি সম্পত্তি যা একটি বুলিয়ান দেয় এবং শর্তাধীন মন্তব্যে পদ্ধতিতে নির্ভর করেisIE.detectedVersion() 5 এবং 10 এর মধ্যে একটি সংখ্যা ফিরে আসে আমি এই ধারণাটি করছি যে 6 এর চেয়ে কম কিছু আছে এবং আপনি গুরুতর পুরাতন স্কুল অঞ্চলে রয়েছেন এবং আপনি এর চেয়ে আরও সুন্দর কিছু পাবেন একটি লাইনার এবং 10 এর চেয়ে বেশি কিছু এবং আপনি নতুন অঞ্চলে চলে আসছেন। আইই 11 সম্পর্কে শর্তাধীন মন্তব্যগুলিকে সমর্থন করে না এমন কিছু পড়েছি তবে আমি সম্পূর্ণ তদন্ত করে দেখিনি, এটি সম্ভবত পরবর্তী তারিখের জন্য।

যাইহোক, এটি যেমন রয়েছে, এবং একটি লাইনারের জন্য এটি আইই ব্রাউজার এবং সংস্করণ সনাক্তকরণের মূল বিষয়গুলিও কভার করবে। এটি নিখুঁত থেকে অনেক দূরে, তবে এটি ছোট এবং সহজেই সংশোধিত।

কেবলমাত্র রেফারেন্সের জন্য, এবং যদি কেউ বাস্তবে এটি কীভাবে বাস্তবায়িত করতে পারে সে সম্পর্কে সন্দেহের মধ্যে থাকে তবে নিম্নলিখিত শর্তাধীনকে সহায়তা করা উচিত।

var isIE = { browser:/*@cc_on!@*/false, detectedVersion: function () { return (typeof window.atob !== "undefined") ? 10 : (typeof document.addEventListener !== "undefined") ? 9 : (typeof document.querySelector !== "undefined") ? 8 : (typeof window.XMLHttpRequest !== "undefined") ? 7 : (typeof document.compatMode !== "undefined") ? 6 : 5; } };

/* testing IE */

if (isIE.browser) {
  alert("This is an IE browser, with a detected version of : " + isIE.detectedVersion());
}

0

আইআই এবং এর সংস্করণগুলি সনাক্ত করা সহজ হতে পারে না এবং আপনার যা কিছু দরকার তা হল নেটিভ / ভ্যানিলা জাভাস্ক্রিপ্টের কিছুটা:

var uA = navigator.userAgent;
var browser = null;
var ieVersion = null;

if (uA.indexOf('MSIE 6') >= 0) {
    browser = 'IE';
    ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
    browser = 'IE';
    ieVersion = 7;
}
if (document.documentMode) { // as of IE8
    browser = 'IE';
    ieVersion = document.documentMode;
}

এবং এটি এটি ব্যবহার করার একটি উপায়:

if (browser == 'IE' && ieVersion <= 9) 
    document.documentElement.className += ' ie9-';

কম সামঞ্জস্যতা ভিউ / মোডে উচ্চতর সংস্করণ সহ সমস্ত আইই সংস্করণে কাজ করে এবং এটি আইপি documentModeমালিকানাধীন।


0

আপনি যদি আই ব্রাউজার সংস্করণটি নির্বাচন করতে চান তবে নীচের কোডটি অনুসরণ করতে পারেন। এই কোডটি আই 611 থেকে আই 11-র সংস্করণে ভাল কাজ করছে

<!DOCTYPE html>
<html>
<body>

<p>Click on Try button to check IE Browser version.</p>

<button onclick="getInternetExplorerVersion()">Try it</button>

<p id="demo"></p>

<script>
function getInternetExplorerVersion() {
   var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ");
        var rv = -1;

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer, return version number
        {               
            if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
                //For IE 11 >
                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);
                        alert(rv);
                    }
                }
                else {
                    alert('otherbrowser');
                }
            }
            else {
                //For < IE11
                alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
            }
            return false;
        }}
</script>

</body>
</html>

0

উইন্ডোটি চালিত IE10 আইই 11 + এ অটো আপডেট হবে এবং ডাব্লু 3 সি স্ট্যান্ডার্ড হবে

এখন, আমাদের আইই 8- সমর্থন করার দরকার নেই-

    <!DOCTYPE html>
    <!--[if lt IE 9]><html class="ie ie8"><![endif]-->
    <!--[if IE 9]><html class="ie ie9"><![endif]-->
    <!--[if (gt IE 9)|!(IE)]><!--><html><!--<![endif]-->
    <head>
        ...
        <!--[if lt IE 8]><meta http-equiv="Refresh" content="0;url=/error-browser.html"><![endif]--
        ...
    </head>

0
var isIE9OrBelow = function()
{
   return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.