জাভাস্ক্রিপ্ট: আমি আইই 9 টি আইই 7 বা আই 88 সামঞ্জস্যতা মোডে সনাক্ত করতে পারি?


87

আমাকে জানতে হবে যে ব্রাউজার যা ব্যবহারকারী এজেন্ট স্ট্রিংয়ের মাধ্যমে নিজেকে আই 7 বা আই 8 বলে পরিচয় দিচ্ছে তা সত্যই সেই ব্রাউজারগুলি কিনা, বা এটি আই 99 7 বা 8 সামঞ্জস্যতা মোডে রয়েছে কিনা।

ইউজার এজেন্ট স্ট্রিংয়ের মধ্যে আমি যা দেখতে পাচ্ছি সেগুলি থেকে, আই 77 সামঞ্জস্যতা মোডের একটি আইআই 9, একটি বাস্তব আই 7 এর জন্য একটি অভিন্ন স্ট্রিং সরবরাহ করে। এমন কোনও অতিরিক্ত সম্পত্তি / উপাদান / অবজেক্ট আছে যা আমি দেখতে দেখতে এটি সত্যই আইই 9 ছদ্মবেশে দেখতে পারি কিনা?

আমি ধরে নিয়েছি যে ডকুমেন্ট মোডটি আমার স্ক্রিপ্টটিতে যে পৃষ্ঠাটি লোড করা হয়েছে তা কোয়ার্ককে জোর করে বা নির্দিষ্ট সেটিংসে জোর করে থাকতে পারে help

আমি আশা করছি যে আই 9 এর কিছু সম্পত্তি থাকবে যা বিদ্যমান এবং এটি 7, 8 বা 9 মোডে নির্বিশেষে পরীক্ষাযোগ্য able


যুক্ত করতে সম্পাদিত ...

ঠিক আছে, আমি এখন কোথায় ভুল হচ্ছিলাম তা দেখতে পাচ্ছি। আমি "ব্রাউজার মোড" ড্রপডাউনটি ব্যবহার করে এটি আইই 8 এবং আই 7 তে স্যুইচ করেছিলাম এবং ভেবেছিলাম এটি যথাক্রমে "আই 88 সামঞ্জস্যতা মোড" এবং "আই 77 সামঞ্জস্যতা মোড"। এটি অবশ্যই সত্য নয়। বিকাশকারী সরঞ্জামগুলির ব্রাউজার মোড সত্যই এটি সেই পুরানো ব্রাউজারগুলিকে "ভালো" হিসাবে পরিবর্তন করে চলেছে, তাই মূল ইউজারেজেন্ট স্ট্রিংগুলি রিপোর্ট করা ঠিক only

যদি আমি ব্রাউজার মোডটি আইই 9 বা আই 99 এর সাথে সামঞ্জস্য রেখে চলে যাই এবং পরিবর্তে ডকুমেন্ট মোডের ড্রপডাউন ভেরিয়েন্টগুলি চেষ্টা করি তবে আমি আসলে 8 টি সংমিশ্রণে (দুটি ব্রাউজার মোড এবং 4 নথি মোড) উপস্থিত "ট্রাইডেন্ট / 5.0" পেতে পারি। আমি কেবল ব্রাউজার মোড আই 7 এবং আইই 8 বেছে নেওয়ার বিষয়ে পরিষ্কার জানি কারণ সেগুলি সত্যই (সিমুলেটেড) আই 7 এবং আই 8 are

সুতরাং কোনও পৃষ্ঠা নেই, একটি অ-বিকাশকারী ব্যবহারকারী, একটি মেটা ট্যাগ, বা মাইক্রোসফ্টের সামঞ্জস্যতার তালিকা আইই 9 কে এই অজানা সনাক্তযোগ্য স্থানে রাখতে সক্ষম হবে।

শুধু ব্যবহার if(navigator.userAgent.indexOf("Trident/5")>-1)যথেষ্ট হবে।

চিন্তা করবেন না, এটি স্টাইল, ফর্ম্যাট, লজিক বা পৃষ্ঠা সামগ্রীর জন্য নয়। আমি এই জিনিসগুলির জন্য বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করি। আমাকে কেবল আই 99 সনাক্ত করতে হবে (এটি কোনও মোডে থাকুক না কেন) এবং এটিতে একটি পৃষ্ঠাবিহীন সামগ্রীর সিদ্ধান্ত নেওয়া উচিত।

আপনার পরামর্শ এবং লিঙ্কগুলি দিয়ে উত্তর দিকে চালিত করার জন্য ধন্যবাদ।


4
কখনও ব্যবহারকারীর এজেন্টকে বিশ্বাস করবেন না ... এটি পুরোপুরি মিথ্যা বলতে পারে এবং এটি সত্য বলছে কিনা তা নিশ্চিত হওয়ার কোনও উপায় নেই ... পরিবর্তে আপনাকে নির্দিষ্ট ফাংশন বা বৈশিষ্ট্যের জন্য পরীক্ষা করা উচিত
JCOC611

4
@ JCOC611 হ্যাঁ এবং না। এটি একটি সুনির্দিষ্ট প্রশ্ন যা কীভাবে এটি সন্ধান করতে হবে যে এটি সামঞ্জস্যতা ভিউতে আইই 9, যা যুক্তিসঙ্গত প্রশ্ন। সত্যিকার অর্থে যে কেউ সহজেই এটি জাল করতে পারে তাই সাধারণভাবে সাইটের কার্যকারিতার জন্য ব্যবহারকারীর এজেন্ট স্ট্রিংয়ের উপর নির্ভর করা উচিত নয়।
ডেনিস জি

4
এমনকি ব্যবহারকারী এজেন্ট নির্ভুল হলেও, যদি সম্ভব হয় তবে বৈশিষ্ট্য সনাক্তকরণ ব্যবহার করা আরও বেশি পছন্দনীয়। তারপরে, আইআই প্রথম স্থানে সামঞ্জস্যতা মোডে রয়েছে কিনা তা আপনার জানতে হবে না।
ডেভ ওয়ার্ড

4
আমি কেবল যুক্ত করতে চাই যে আপনি যদি ভুল ব্রাউজার মোড ব্যবহার করে এমন ব্যবহারকারীদের একটি দ্রুত টিউটোরিয়াল সরবরাহ করতে চান তবে এটি খুব দরকারী।
জুস্ট

4
@ JCOC611 যারা তাদের ব্যবহারকারীর ছলনা করবে এবং জিনিসগুলি সঠিকভাবে কাজ করার প্রত্যাশা করবে - আমাদের কি সত্যিই সেই ক্ষেত্রে যত্ন নেওয়া উচিত?
জনিফাল্ডো

উত্তর:


67

আইই comp এর সামঞ্জস্যতা মোডে চালিত হওয়ার সময় আসলে ব্যবহারকারীর এজেন্ট স্ট্রিং আইই 9 এর জন্য আলাদা, সুতরাং বিভিন্ন আই ভার্সনের মধ্যে পার্থক্য করার জন্য এটি অন্যতম সেরা উপায়।

আইই 9 এর ব্যবহারকারী এজেন্ট স্ট্রিং উপস্থাপন করছে :

আইই 8 এর মতো, আই 9 এর সামঞ্জস্যতা ভিউ আই 7 মানক মোডে মানচিত্র করবে এবং যখন সামঞ্জস্যতা ভিউ থাকবে তখন আই 9 এর ইউএ স্ট্রিংটি হবে:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)

সামঞ্জস্যতা ভিউতে, আই 99 অ্যাপ্লিকেশন সংস্করণ নম্বর (মোজিলা / 4.0) এবং সংস্করণ টোকেন (এমএসআইই 7.0) এর মাধ্যমে নিজেকে আই 7 হিসাবে প্রতিবেদন করে। এটি সামঞ্জস্যের জন্য করা হয়। 'ট্রাইডেন্ট / ৪.০' থেকে 'ট্রাইডেন্ট / ৫.০' পর্যন্ত একটি বর্ধিত ট্রাইডেন্ট টোকেন ওয়েবসাইটগুলিকে কমপ্যাট ভিউতে চলমান আইআই ৯ এবং কমপ্যাট ভিউতে চলমান আইই ৮ এর মধ্যে পার্থক্য করতে দেয়

(আমার দ্বারা জোর দেওয়া)। সুতরাং ব্যবহারকারী এজেন্ট স্ট্রিংটি একই হিসাবে এটি নিজেকে "মোজিলা / ৪.০" এবং এমএসআইই .0.০ বলে প্রতিবেদন করে, তবে আইই ৯ সর্বদা ট্রাইডেন্ট / ৫.০ থাকবে - এটি এমএসআইই 7.০, এমএসআইই 8.০ বা এমএসআইই 9.০ বলুক না কেন।

আসলে আপনার এই দুর্দান্ত সংকলনটি পরীক্ষা করা উচিত: ব্রাউজার আইডি (ব্যবহারকারী-এজেন্ট) স্ট্রিংস বা আরও ভাল ইউজরেজেন্ট্রিংস.কম


4
হাই ক্রেস্টিয়ার আমি এটিও দেখেছি যে আইই 9 আই 7 আই মোডে থাকাকালীন "ট্রাইডেন্ট / 5.0" উপস্থিত থাকার কথা, তবে এটি আমি উইন 7 প্রো x64 এ আমার (চূড়ান্ত) আই 9 তে দেখছি না। এটি আইই 7 মোডে কোনও ত্রিশূল দেখাচ্ছে না (যা আসল আই 7 এর মতো দেখায়) এবং এটি আই 88 মোডে ট্রিডেন্ট 4 দেখায় (আবার আসল আই 88 দেখতে কেমন)। আমি ব্রাউজার মোড নির্বাচন করতে প্রথমে আইপি 9 বিকাশকারী সরঞ্জামগুলি ব্যবহার করছি এবং তারপরে জাভাস্ক্রিপ্ট সতর্কতা ঠিকানা বারে: সতর্কতা (নেভিগেটর.উজার
এজেন্ট

4
"ট্রাইডেন্ট / 5.0" আইই 9 এর ব্যবহারকারী-এজেন্ট স্ট্রিংয়ে সমস্ত মোডে উপস্থিত রয়েছে।
এরিকলও

যেমন এরিকল বলেছেন, ডি। আপনি যখন সামঞ্জস্যতা মোড ব্যবহার করছেন তখন অবশ্যই ট্রাইডেন্ট / 5.0 উপস্থিত থাকতে হবে (ব্রাউজার মোডের জন্য আলাদা হতে পারে?) আপনি কিভাবে ব্যবহারকারী এজেন্ট স্ট্রিং চেক করবেন? Whatsmyuseragent.com এর মাধ্যমে চেক করার চেষ্টা করুন এবং ফিরে রিপোর্ট করুন।
ডেনিস জি

নীচে আমার প্রতিক্রিয়া দেখুন (আপনার নিজের বার্তায় একটি প্রতিক্রিয়া যোগ করার বিষয়ে 8 ঘন্টা নিয়মের একটি স্ট্যাক ওভারফ্লো হওয়ার কারণে আমাকে অন্য আইডি Dee2001 ব্যবহার করতে হয়েছিল)। হ্যাঁ এরিক এবং মুন্টিয়ার দুটিই সঠিক, আইআই 9 এর সমস্ত মোডে ট্রাইডেন্ট / 5.0 উপস্থিত রয়েছে is আমার বড় ভুলটি "ব্রাউজার মোড" বিকাশকারী সরঞ্জামগুলিতে আই 7 বা আইই 8 তে পরিবর্তন করছিল, তবে এটি কোনও "মোড" নয় যা কোনও পৃষ্ঠা / মেটা ট্যাগ / সামঞ্জস্যের তালিকা প্রয়োগ করতে পারে। পরিবর্তে এটি সত্যই ব্রাউজারগুলি তাদের অনুকরণ করে, তাই স্বাভাবিকভাবেই ইউজারডেন্ট স্ট্রিংটি সত্যই আইআই 7/8 এর মতো।
Dee2000

4
এটি নিখুঁত! অনেক ধন্যবাদ. আমি প্রতিবেদিত ব্রাউজারের উপর ভিত্তি করে স্টাইল করি না তবে আমি যে সাইটের উপরে কাজ করছি তার শীর্ষে একটি সতর্কতা বার স্থাপন করছি যা ব্যবহারকারীর আপগ্রেড করার প্রয়োজন আছে (যদি শর্তাধীন ট্যাগগুলি বলে যে এটি ie7 এর চেয়ে কম বা সমান) - আমি এই ক্ষেত্রে আপগ্রেড বলতে বার্তাটি চাই না বরং তুলনামূলকভাবে সামঞ্জস্যতা মোড অক্ষম করব
চেলসি উরখার্ট

47

document.documentMode ডকুমেন্ট মোডের জন্য সেরা উপায়।


17
উত্তরটি কিছুটা প্রসারিত করুন। আরও প্রসঙ্গ।
এলোমেলো_ ব্যবহারকারীর_নোমেন

4
লোকেরা কেন এটি বিহ্বল করছে না, এর ঠিক কী প্রয়োজন
জ্যামি হুটার

4
এটি অবশ্যই সেরা উপায় best আপনি এটা এই ভাবে ব্যবহার করতে পারেন: <script> if (document.documentMode == 7) alert("Yo, put it in its normal mode, will ya?") </script>। আসল (!) আই 7 এবং সমস্ত নন-আইইগুলি 'অপরিবর্তিত' ফিরে আসে, কেবল আইপি 8/9 কমপ্লেক্সে। মোড রিটার্ন 7. আমি IE10 পরীক্ষা করতে পারি না, তবে এটি একই হওয়া উচিত।
ফ্রাঙ্ক কনিজন

4
প্রান্ত মেটা ট্যাগ সহ একপাশে IE10 এ এটি চেষ্টা করেছেন; সাধারণত, এটি "10" ফেরত দেয়। সমস্ত সাইটের জন্য সামঞ্জস্যতা মোড জোর করে, এবং এটি এখনও "10" প্রদান করে।
ওয়েলকাহোলিজম

আইই 10 এবং আই 1111 পূর্বরূপে আমার জন্য কাজ করে
সাইমন

20

আইই 7 তে ট্রাইডেন্ট সম্পর্কিত কোনও তথ্য নেই

User-Agent : Mozilla/4.0 (compatible; MSIE 7.0)

আইই 8-তে এই স্ট্রিং রয়েছে: "ট্রাইডেন্ট / 4.0"

User-Agent : Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0)

আই 9 9-এ এই স্ট্রিং রয়েছে: "ট্রিটেন্ট / 5.0"

সামঞ্জস্যতা মোডে আই 9:

User-Agent : Mozilla/4.0 (compatible; MSIE 7.0; Trident/5.0)

আইই 9 সাধারণ মোডে:

User-Agent : Mozilla/5.0 (compatible; MSIE 9.0; Trident/5.0)

4
এটি দুর্দান্ত, আইই 10 ইনক্রিমেন্ট ট্রাইডেন্টও কি?
slotishtype

4
ইন্টারনেট এক্সপ্লোরার 10 জন ব্যবহারকারী ট্রাইডেন্ট / 6.0 .... দেখুন ব্লগস.এমএসএন
স্লিশটিটাইপ

4
এবং
আই


11

আমি আশা করছি যে আই 9 এর কিছু সম্পত্তি থাকবে যা বিদ্যমান এবং এটি 7, 8 বা 9 মোডে নির্বিশেষে পরীক্ষাযোগ্য able

স্টাইল.ওপ্যাসিটির জন্য উদাহরণস্বরূপ পরীক্ষা করুন , এটি আই 9 তে চালু হয়েছিল এবং এটি সামঞ্জস্যতা-মোড নির্বিশেষে উপলব্ধ:

<![if IE]> 
<script>
if(typeof document.documentElement.style.opacity!='undefined')
{
  //this must be at least IE9 
}
</script>
<![endif]>

4
ধন্যবাদ ডাঃ মোল্ল, আমি চেষ্টা করে দেখাবো
Dee2000

দুর্ভাগ্যক্রমে এটি কেবল ব্রাউজার মোডের জন্য কাজ করে (আইই 9 বিকাশকারী সরঞ্জামগুলির বাম-হাতের ড্রপ-ডাউন)। এটি ডকুমেন্ট মোডের জন্য কাজ করে না (ডান হাতের ড্রপ ডাউন)। নথি মোডের জন্য, এটি কেবল আইই 9 নথি মোডে কাজ করে। যদি এটি আই 8, আই 7 বা কুইর্কস মোডে থাকে তবে সেই যুক্তি ব্যর্থ হয়।
Dee2000

7
জঘন্য, আপনার অধিকার। আমি আরেকটি সম্পত্তি পেয়েছি, প্রতিটি মোডে আমার জন্য কাজ করে: উইন্ডো.পর্ফারেন্স
ডঃমোল

@ ডি 2000: এটি ডকুমেন্টমোডের জন্যও আমার পক্ষে কাজ করে। অর্থাত্ যদি ডকুমেন্টমোড = "ইন্টারনেট এক্সপ্লোরার 9 স্ট্যান্ডার্ড" এই পরীক্ষাটি সফল হয়।
নিক্লাস বেকম্যান

@ ডঃমোল এর জন্য ধন্যবাদ, উইন্ডো.অরফর্মেন্স সুন্দরভাবে কাজ করে।
lewsid

3

কখনও কখনও জাভাস্ক্রিপ্ট নেভিগেটর অবজেক্ট থেকে নয়, সার্ভার ভেরিয়েবল থেকে ব্যবহারকারী এজেন্ট স্ট্রিং পড়তে হয়।

পার্থক্য তুলনা:

  • এএসপি ক্লাসিক, আইই ১১

    • ক্লায়েন্ট জাভাস্ক্রিপ্ট, নেভিগেটর.উজারএজেন্ট: " মজিলা / 5.0 (সামঞ্জস্যপূর্ণ; এমএসআইই 9.0; উইন্ডোজ এনটি 6.1; ডাব্লুডব্লিউ / 7.0; এসএলসিসি 2;। নেট সিএলআর 2.0.50727;। নেট সিএলআর 3.5.30729; নেট সিএলআর 3.0.30729; মিডিয়া সেন্টার পিসি 6.0; .NET4.0C; .NET4.0E; BOIE9; ENUS) "

    • সার্ভার এএসপি, রিকোয়েস্ট.সভারবারিভেরিয়েবলস ("HTTP_USER_AGENT"): " মজিলা / 5.0 (উইন্ডোজ এনটি 6.1; ডাব্লুডব্লিউ 64; ট্রিটেন্ট / 7.0; বিওআইই 9; ENUS; আরভি: 11.0) গেকোর মতো "

  • এএসপি ক্লাসিক, আই 1111 সামঞ্জস্যতা মোড :

    • ক্লায়েন্ট জাভাস্ক্রিপ্ট, নেভিগেটর.উজারএজেন্ট: " মজিলা / 5.0 (সামঞ্জস্যপূর্ণ; এমএসআইই 9.0; উইন্ডোজ এনটি 6.1; ডাব্লুডব্লিউ / 7.0; এসএলসিসি 2;। নেট সিএলআর 2.0.50727; নেট সিএলআর 3.5.30729; নেট সিএলআর 3.0.30729; মিডিয়া সেন্টার পিসি 6.0; .NET4.0C; .NET4.0E; BOIE9; ENUS)) "

    • সার্ভার এএসপি, রিকোয়েস্ট.সভারভারিভেরিয়েবলস ("HTTP_USER_AGENT"): " মজিলা / 4.0 (সামঞ্জস্যপূর্ণ; এমএসআইই 7.0; উইন্ডোজ এনটি 6.1; ডাব্লুডাব্লু 64; ট্রিটেন্ট / 7.0; এসএলসিসি 2;। নেট সিএলআর 2.0.50727; নেট সিএলআর 3.5.30729; নেট CLR 3.0.30729; মিডিয়া সেন্টার পিসি 6.0; .NET4.0C;। নেট 4.0E; BOIE9; ENUS) "


0

Https://stackoverflow.com/a/29288153/2879498 থেকে

ধরে নিই আপনার আইডি কমপ্যাট-সতর্কতার সাথে একটি গোপন উপাদান রয়েছে:

জাভাস্ক্রিপ্ট W / jQuery:

$(function(){
    function showCompatWarning() {
        $('#compat-warning')
            .css('display','block')
            .css('height','auto')
            .show();
    }
    var tridentOffset = navigator.appVersion.indexOf('Trident/');
    if ( tridentOffset === -1 ) return;
    var jscriptVersion = 0;
    /*@cc_on @*/
    /*@if (@_jscript) jscriptVersion = @_jscript_version ; @*/;
    /*@end @*/
    var tridentVersion = parseInt(navigator.appVersion.substr(tridentOffset+8),10);
    var guessIEVersion = tridentVersion + 4;
    if (( document.documentMode && jscriptVersion && jscriptVersion < 10 && jscriptVersion !== document.documentMode ) ||
        ( document.compatMode && document.compatMode === 'BackCompat') ||
        ( document.documentMode && document.documentMode < 10 && document.documentMode != guessIEVersion ))
        showCompatWarning();
});

সনাক্তকরণ এবং সতর্কতা, সামঞ্জস্য নরকের বিরুদ্ধে আপনার প্রতিরক্ষা প্রথম এবং শেষ লাইন।

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