আমি কীভাবে j 8 এর সাথে IE 8 সনাক্ত করব?


102

আমি কেবল ব্রাউজারের টাইপই নয়, jQuery ব্যবহার করে সংস্করণও সনাক্ত করতে পারি। বেশিরভাগ ক্ষেত্রেই আমি এটি 8 বা না তা খুঁজে বার করতে হবে।

আমি এটি সঠিকভাবে করছি কিনা তা নিশ্চিত নই।

যদি আমি করি :

if (jQuery.browser.version >= 8.0) {
dosomething}

আমি নিশ্চিত নই যে এটি 8.123.45.6 সংস্করণে কাজ করবে বা এটি করবে?

সম্পাদনা করুন: নোট করুন যে জিকুয়ারি 2+ আইই 8 এবং নীচে সমর্থন ছেড়েছে এবং তাই আই 88 সনাক্ত করতে আর ব্যবহার করা যাবে না। যদি জিকুয়েরির বর্তমান সংস্করণ ব্যবহার করা হয় তবে এটি নন-জিক্যুরি সমাধান ব্যবহার করা প্রয়োজন।


11
নীচে প্রস্তাবিত উত্তরগুলি আপনাকে jQuery.browser ব্যবহার করার পরামর্শ দেয়। তবে jQuery ডকুমেন্টেশন jQuery.browser এর ব্যবহারকে অবমূল্যায়ন করে। পরিবর্তে, তারা আপনাকে jQuery.support ব্যবহার করার পরামর্শ দেয় এবং এমন কোনও বৈশিষ্ট্য নির্দেশ করে যা ব্রাউজারটিকে পতাকাঙ্কিত করতে সমর্থ নয়। উদাহরণস্বরূপ, আপনি যদি (jQuery.support.opacity == মিথ্যা) {আপনার আইই 8 এবং আই 7 কোডটি ব্যবহার করতে পারেন
IberoMedia

এটি jquery.support.opacityঠিক আমি যা চেয়েছিলাম তা করেছে। ধন্যবাদ ...
nrod


আপনি যদি জিনিসগুলি সঠিকভাবে করেন তবে আপনার ব্রাউজার সংস্করণ সনাক্তকরণ খুব কমই করা উচিত। এমন একটি কারণ রয়েছে যে এই বৈশিষ্ট্যটি jQuery থেকে সরানো হয়েছিল এবং সেই কারণটি হ'ল ব্রাউজার সংস্করণ সনাক্তকরণ খারাপ অভ্যাস। পরিবর্তে বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করা প্রায় সব ক্ষেত্রেই সমস্যার সমাধান করবে।
স্পুডলে

2
আইই 8 সনাক্ত করতে হবে কারণ এটি কেবলমাত্র ব্রাউজার যিনি জাভাস্ক্রিপ্ট ইঞ্জিনটি এত ধীর গতিযুক্ত যে এটি একটি ডায়ালগ এনেছে যা এই পৃষ্ঠায় "আপনি কি স্ক্রিপ্ট চালানো বন্ধ করতে চান" এবং এই ডিফল্টটি হ্যাঁ হ্যাঁ। এর জন্য যদি কোনও বৈশিষ্ট্য সনাক্তকরণ ব্যবস্থা থাকে তবে আমি এটি ব্যবহার করব। অন্যথায় এটি যদি ব্রাউজার == আইই 8 হয়। আমি জাভাস্ক্রিপ্টটি অপ্টিমাইজ করতে পারছি না, কারণ এটি
কেন্দোর

উত্তর:


79

এটি jQuery API ডকুমেন্টেশনে নথিভুক্ত করা হয়েছে । সঙ্গে ইন্টারনেট এক্সপ্লোরার $.browser.msieপরীক্ষা করুন এবং তারপরে এর সংস্করণটি পরীক্ষা করুন $.browser.version

আপডেট: jQuery 1.9 এ ব্রাউজার সরানো হয়েছে

JQuery.browser () পদ্ধতিটি jQuery 1.3 থেকে অবহেলা করা হয়েছে এবং 1.9-এ সরানো হয়েছে। প্রয়োজনে এটি jQuery মাইগ্রেট প্লাগইন এর অংশ হিসাবে উপলব্ধ। আমরা মডার্নিজারের মতো লাইব্রেরির সাথে বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করার পরামর্শ দিই।


যদি আমি এটি করি: if (jQuery.browser.version> = 8.0) {ডোজোমিং} আমি নিশ্চিত নই যে এটি 8.123.45.6 সংস্করণে কাজ করবে নাকি তা করবে?
সালমানে

13
এটি একটি স্ট্রিং, তাই আপনার করা উচিত if(jQuery.browser.version.substring(0, 2) == "8.") { ... }। এইভাবে এটি IE8 এর সমস্ত সংস্করণের সাথে কাজ করবে।
অ্যান্ডিডগ

13
jQuery.browser১.৩-এ অবহেলা করা হয়েছিল এবং ভবিষ্যতে কোনও প্লাগইনে স্থানান্তরিত হতে পারে। JQuery.browser ডক্স দেখুন
bendytree

ধন্যবাদ, এটি এখনও কাছাকাছি এবং অবচয় সম্পর্কে কোনও উল্লেখ নেই, @ বেন্ডাইট্রি
অ্যালাস্টার

47
jquery.browser 1.9
মানদীপ জৈন

173

আমি মনে করি সর্বোত্তম উপায় এটি হবে:

এইচটিএমএল 5 বয়লারপ্লেট থেকে:

<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7]>    <html lang="en-us" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="no-js ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]-->

জেএসে:

if( $("html").hasClass("ie8") ) { /* do your things */ };

বিশেষত যেহেতু $.browserjQuery 1.9+ থেকে সরানো হয়েছে।


11
আইই সংস্করণ সনাক্তকরণের এটি খুব চালাক উপায়। আমি অনেক পছন্দ করি!
গ্রেগ

এই শর্তসাপেক্ষ মন্তব্যগুলি উপেক্ষা করার চেয়ে আপনার ওয়েবসাইটটি 'বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / এক্সএইচটিএমএল + এক্সএমএল' শিরোনাম সরবরাহ করা থাকলে কাজ করে না
ফিলিপ

1
খুব চালাক ... তবে লক্ষণীয় যে আপনার এইচটিএমএল 5 বিপি-তে শর্তাবলীর সাহায্যে যুক্ত ক্লাসগুলি পরীক্ষা করা দরকার। মুহূর্তে আমি মনে করি ক্লাস হয় lt-ie9AOTie8
byronyasgur

2
@ মিয়ো আমিও এই বাস্তবায়ন পছন্দ করি। কিন্তু ক্লাসের <html>পরিবর্তে সংযুক্ত হওয়ার কারণ রয়েছে <body>কি?
বিশ্রাম নিচ্ছেন

@ মিয়ো আকর্ষণীয়। ধন্যবাদ।
বিশ্রাম নিচ্ছেন


56

আইই 8 সনাক্ত করতে আপনি HTML ব্যবহার করতেও ভুলবেন না।

<!--[if IE 8]>
<script type="text/javascript">
    ie = 8;
</script>
<![endif]-->

আপনার সমস্ত স্ক্রিপ্টগুলির আগে এটি থাকার পরে আপনি কেবল "অর্থাত" পরিবর্তনশীল বা যা কিছু যাচাই করতে পারবেন।


4
এই বাক্য গঠনটি "" এর চেয়ে কম "(" [যদি এলটি আইই 7] ") এবং" এর চেয়ে বড় "(" [যদি জিটি আইই 8] "থাকে) তুলনামূলককেও সমর্থন করে।
spiffytech

1
<! - [আইটি 8 ই lte]> এর জন্য
IE8

1
এটি করার সর্বোত্তম উপায় এটি কেবল অন্য পৃষ্ঠায় পুনর্নির্দেশ করুন যা বলে যে "আপনি আইই 8 ব্যবহার করছেন কেন?" এখন উন্নতি কর!
লিওন গাবান

2
আজকের স্ট্যান্ডার্ড অনুসারে, আমি তাদের জিজ্ঞাসা করব কেন তারা মোটেই IE ব্যবহার করছেন।
দ্য বজসউ

এটি এখন সেরা সমাধানের মতো দেখায় যেহেতু JQuery 2.1.1 আই 8 এর সাথে কাজ করে না, এবং তাই আই 88 সনাক্ত করতে ব্যবহার করা যায় না!
ডেভ

27

ব্রাউজারটি IE8 না হলে ডকুমেন্ট.ডোকামেন্টমোড অপরিজ্ঞাত করা হয়েছে,

এটি স্ট্যান্ডার্ড মোডের জন্য 8 এবং 'আই 7 এর সাথে সংযোগযোগ্য' এর জন্য 7 দেয়

যদি এটি আই 7 হিসাবে চলমান থাকে তবে প্রচুর CSS এবং ডোম বৈশিষ্ট্য রয়েছে যা সমর্থিত হবে না।


9
মনে রাখবেন যে আইই 9 প্রত্যাবর্তন করে 9. এটি একটি উচ্চ-ভোটযুক্ত উত্তর হওয়া উচিত, যদিও এখন $। ব্রাউজারটি আর ভাল সমাধান নয়। চেষ্টা করুন:if ((document.documentMode || 100) < 9) { // IE8
ডন ম্যাককার্দি

যদি (ডকুমেন্ট.ডোকমেন্ট
মোড

কিছু অ্যাপ্লিকেশনের জন্য যেখানে আইই 8 এখনও অনেক বেশি ব্যবহারে রয়েছে - যথা মার্কিন বিদ্যালয়গুলি - @ ডন ম্যাককুড্রির পন্থা সহজ এবং কার্যকর উভয়ই। মডার্নিজারের সাথে মিলিয়ে এটি দুর্দান্ত কাজ করে।
cbmtrx

দুর্দান্ত উত্তর! এটি আইই ১১ এর মাধ্যমে আইই ১১ এর মাধ্যমে সংস্করণ নম্বরগুলি প্রত্যাবর্তন করে (শর্তাধীন মন্তব্যের জন্য আই 5 এর মাধ্যমে আই 9 এর সাথে তুলনা করে - যদি এখনও কেউ জেনুইন আই 7 বা আই 6 সনাক্ত করতে হয় তবে আপনাকে শর্তযুক্ত মন্তব্যগুলি ব্যবহার করতে হবে)। নোট করুন যে পৃষ্ঠাটি লোড হওয়ার সময় ডক্স অনুসারে এটি ফিরে আসতে পারে 0- "পরবর্তী সময়ে নথির সামঞ্জস্যতা মোড নির্ধারণ করার চেষ্টা করুন" (যেমন নথির প্রস্তুতের পরে)।
user56reinstatemonica8

15

ধরে নেওয়া যাক ...

  • ... এটি যে পুরানো ভার্সনগুলিতে স্টাইলকে সঠিকভাবে দেখানোর জন্য আপনি সনাক্ত করতে আগ্রহী IE এর পুরানো সংস্করণগুলির ক্র্যাঙ্কি রেন্ডারিং ইঞ্জিন (অন্যথায়, বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করুন)
  • ... যে আপনি এইচটিএমএলটিতে কেবল শর্তাধীন মন্তব্য যুক্ত করতে পারবেন না - যেমন কোনও পৃষ্ঠাতে প্রয়োগ করা যেতে পারে এমন জেএস প্লাগইনগুলির জন্য (অন্যথায়, কেবল শর্তযুক্ত শ্রেণির কৌশল <body>বা এর জন্য করুন <html>)

... তবে এটি সম্ভবত সেরা কৌশল ( এই নন-জিকুয়েরির উপর ভিত্তি করে , কিছুটা কম নমনীয় বৈকল্পিক )। এটি তারপরে পরীক্ষাগুলি তৈরি করে তার জন্য উপযুক্ত শর্তাধীন মন্তব্য সরিয়ে দেয়।

(শর্তসাপেক্ষ মন্তব্যগুলি আইই 10 + 'স্ট্যান্ডার্ড মোডে উপেক্ষা করা হয় - তবে আইই 10 +' স্ট্যান্ডার্ড মোডে 'পাগল রেন্ডারিং ইঞ্জিন না থাকায় এটি ঠিক হওয়া উচিত!)

এই ফাংশনটি বাদ দিন:

function isIE( version, comparison ){
    var $div = $('<div style="display:none;"/>');

    // Don't chain these, in IE8 chaining stops some versions of jQuery writing the conditional comment properly
    $div.appendTo($('body'));
    $div.html('<!--[if '+(comparison||'')+' IE '+(version||'')+']><a>&nbsp;</a><![endif]-->');

    var ieTest = $div.find('a').length;
    $div.remove();
    return ieTest;
}

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

if(isIE()){ /* runs in all versions of IE after 4 before standards-mode 10 */ }

if(isIE(8)){ /* runs in IE8 */ }

if(isIE(9)){ /* runs in IE9 */ }

if(isIE(8,'lte')){ /* runs in IE8 or below */ }

if(isIE(6,'lte')){ /* if you need this, I pity you... */ }

আমি এই ফাংশনটির ফলাফলগুলি ক্যাশে করার পরামর্শ দিচ্ছি যাতে আপনার এটি পুনরাবৃত্তি করতে না হয়। উদাহরণস্বরূপ, আপনি স্ট্রিংটি (comparison||'')+' IE '+(version||'')কোনও কীটে কোনও জায়গায় এই পরীক্ষার ফলাফলটি সংরক্ষণ এবং পরীক্ষা করার জন্য কী হিসাবে ব্যবহার করতে পারেন ।


9

বিঃদ্রঃ:

1) $। ব্রাউজারটি jQuery 1.9+ এ বাদ পড়েছে (যেমন মনদীপ জৈন উল্লেখ করেছেন)। এটা তোলে হয় বাঞ্ছনীয় ব্যবহার করতে .support পরিবর্তে।

2) যখন ব্রাউজারটি "সামঞ্জস্যতা" মোডে থাকে তখন b .browser.version IE> 7 এ "7" ফিরে আসতে পারে।

3) আইই 10 হিসাবে, শর্তাধীন মন্তব্যগুলি আর কাজ করবে না।

4) jQuery 2.0+ বাদ পড়বে IE 6/7/8 এর জন্য সমর্থন

5) ডকুমেন্ট.ডোকামেন্টমডটি কেবল ইন্টারনেট এক্সপ্লোরার 8+ ব্রাউজারগুলিতে সংজ্ঞায়িত করা বলে মনে হয় । প্রত্যাশিত মানটি আপনাকে "সামঞ্জস্যতা" মোডে ইন্টারনেট এক্সপ্লোরারটি চলমান বলবে। এখনও ভাল সমাধান না।

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

এখনও অবধি আমি এটি কাজ করতে পেলাম (দয়া করে):

(যদি ডকুমেন্টমোডটি সংজ্ঞায়িত না করা হয় এবং এইচটিএমএল সিরিয়ালাইজ এবং অস্বচ্ছতা সমর্থন করে না, তবে আপনি সম্ভবত আইআই <8 এর দিকে তাকাচ্ছেন)

if(!document.documentMode && !$.support.htmlSerialize && !$.support.opacity) 
{
    // IE 6/7 code
}

5

আপনি যদি ব্রাউজার সংস্করণগুলিতে ঝাঁকুনি দেন তবে এটি প্রায়শই ভাল হয় না। আপনি নিজের দ্বারা এটি প্রয়োগ করতে চান না। তবে আপনি পল আইরিশ এবং অন্যান্য স্মার্ট লোকেরা তৈরি মডার্নজার করতে পারেন । এটা তোলে নির্ণয় করতে পারবে কি ব্রাউজার আসলে করতে না এবং apropriate শ্রেণীর করা <html>উপাদান। তবে মডার্নিজারের সাহায্যে আপনি এই জাতীয় সংস্করণ পরীক্ষা করতে পারেন:

$('html.lt-ie9').each() {
    // this will execute if browser is IE 8 or less
}

মিল, আপনি ব্যবহার করতে পারেন .lt-ie8, এবং .lt-ie7


3

আপনার jQuery.support দেখতে হবে । আপনার কার্যকারিতা কোডিংয়ের জন্য ব্রাউজার সনাক্তকরণের চেয়ে বৈশিষ্ট্য সনাক্তকরণ অনেক বেশি নির্ভরযোগ্য (যদি আপনি কেবল ব্রাউজার সংস্করণগুলিতে লগ করার চেষ্টা না করেন)।


3
আইই 8 সনাক্ত করতে আপনি কীভাবে jQuery.support ব্যবহার করবেন?
বিশপজেড

যদি আপনি যা খুঁজছেন তা যদি এজেএক্স হয় তবে আপনি jQuery.support.ajax ব্যবহার করতে পারেন যা ব্রাউজারটি এজেএক্স সমর্থন করে যদি সত্য ফিরে আসে
জোনাথন লিন

এই উত্তরটি সাহায্য করা উচিত: stackoverflow.com/questions/1944169/...
helgatheviking

3

এই jquery ব্যবহার করে আপনি সহজেই ব্রাউজারের কোন ধরণের এবং সংস্করণ সনাক্ত করতে পারেন

$(document).ready(function()
{
 if ( $.browser.msie ){
    if($.browser.version == '6.0')
    {   $('html').addClass('ie6');
    }
    else if($.browser.version == '7.0')
    {   $('html').addClass('ie7');
    }
    else if($.browser.version == '8.0')
    {   $('html').addClass('ie8');
    }
    else if($.browser.version == '9.0')
    {   $('html').addClass('ie9');
    }
 }
 else if ( $.browser.webkit )
 { $('html').addClass('webkit');
 }
 else if ( $.browser.mozilla )
 { $('html').addClass('mozilla');
 }
 else if ( $.browser.opera )
 { $('html').addClass('opera');
 }
});

1

ব্রাউজার / ওএস সনাক্তকরণের জন্য এখানে জ্যাকি ব্রাউজার সনাক্তকরণ প্লাগইন।

আপনি এটি প্লাগইন অন্তর্ভুক্ত করার পরে স্টাইলিং উদ্দেশ্যে ব্যবহার করতে পারেন।

$("html").addClass($.os.name);
$("body").addClass($.browser.className);
$("body").addClass($.browser.name);

0

আপনি ব্রাউজারের নামটি সনাক্ত করতে $। ব্রাউজার ব্যবহার করতে পারেন। সম্ভাব্য মানগুলি হ'ল:

  • ওয়েবকিট (jQuery 1.4 হিসাবে)
  • সাফারি (অবহেলিত)
  • অপেরা
  • msie
  • মোজিলা

বা বুলিয়ান পতাকা পান: ব্রাউজারটি এমএসআইই হলে b .browser.msie সত্য হবে।

সংস্করণ নম্বর হিসাবে, যদি আপনি কেবল প্রধান রিলিজ সংখ্যার প্রতি আগ্রহী হন - তবে আপনি পার্সেন্ট ব্যবহার করতে পারেন (browser ব্রাউজার.বর্তন, 10)। নিজেকে b .browser.version স্ট্রিংটি পার্স করার দরকার নেই।

যাইহোক, $। সমর্থন সম্পত্তিটি features। ব্রাউজারের উপর নির্ভর না করে নির্দিষ্ট বৈশিষ্ট্যগুলির জন্য সমর্থন সনাক্তকরণের জন্য উপলব্ধ।

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