الكشف عن القدرة
القدرة على اكتشاف متصفح معين قبل كتابة رمز. على سبيل المثال ، قد يتعين على البرنامج النصي اكتشاف وجود دفعة مقدمة لوظيفة قبل الاتصال بها. تمنع طريقة الكشف هذه المطورين من النظر في أنواع ونسخات محددة ، مما يسمح لهم بالتركيز على ما إذا كانت القدرات المقابلة موجودة. لا يمكن اكتشاف القدرة على اكتشاف متصفحات وإصدارات محددة بدقة.
اكتشاف Quirk
المراوغات هي في الواقع الأخطاء في تطبيقات المتصفح. على سبيل المثال ، كان هناك Quirk في KIRKITs المبكرة ، أي أنه سيعود سمات مخفية في حلقة العمل. عادةً ما يتضمن اكتشاف Quirk تشغيل قطعة من الكود ثم تحديد ما إذا كان المتصفح يحتوي على Quirk. لأن اكتشاف quirk لا يمكن أن يكتشف بدقة متصفحات وإصدارات محددة.
اكتشاف وكيل المستخدم
حدد المتصفح عن طريق اكتشاف سلسلة وكيل المستخدم. تحتوي سلسلة وكيل المستخدم على كمية كبيرة من المعلومات المتعلقة بالمتصفح ، بما في ذلك المتصفح والمنصة ونظام التشغيل وإصدار المتصفح. سلاسل وكيل المستخدم لها تاريخ تطوير كبير. خلال هذه الفترة ، يضيف عرض مزود المستعرض دائمًا بعض المعلومات الخادعة إلى سلسلة وكيل المستخدم ، ويخدع موقع الويب بالتفصيل متصفحه الخاص هو متصفح آخر. يتطلب اكتشاف وكيل المستخدم مهارات خاصة ، لا سيما أن تدرك أن الأوبرا تخفي سلاسل وكيل المستخدم الخاصة بها. ومع ذلك ، لا يزال من الممكن اكتشاف محرك العرض الذي يستخدمه المستعرض والمنصة المستخدمة من قبل الجهاز المحمول ونظام الألعاب من خلال سلسلة وكيل المستخدم.
أثناء كل طلب HTTP ، يتم إرسال سلسلة وكيل المستخدم كرأس استجابة ، ويمكن الوصول إلى السلسلة من خلال خاصية Navigator.useragent من JavaScript. على جانب الخادم ، إنها ممارسة شائعة ومقبولة على نطاق واسع لتحديد المتصفح المستخدم عن طريق اكتشاف سلسلة وكيل المستخدم. على جانب العميل ، يُعتبر اكتشاف وكيل المستخدمين عمومًا الملاذ الأخير ، مع أولوية بعد الكشف عن القدرة والكشف عن quirk.
var client = function () {// rendering engine var engine = {ie: 0 ، gecko: 0 ، webkit: 0 ، khtml: 0 ، opera: 0 ، // number prose ver: null} ؛ // Browser var Browser = {// Main Browser IE: 0 ، Firefox: 0 ، Safari: 0 ، Konq: 0 ، Opera: 0 ، chrome: 0 ، // number ver ver ver: null} ؛ // اكتشاف المحرك والمتصفح var ua = navigator.useragent ؛ if (window.opera) {engine.ver = browser.ver = window.opera.version () ؛ engine.opera = browser.opera = parsefloat (earch.ver) ؛ } آخر إذا (/applewebkit//(/s+)/.test(ua)) {earch.ver = regexp ["$ 1"] ؛ engine.webkit = parsefloat (engine.ver) ؛ // حدد ما إذا كان Chrome أو Safari if (/chrome//(/s+)/.test(ua)) {browser.ver = regexp ["$ 1"] ؛ Browser.Chrome = parsefloat (engine.ver) ؛ } آخر إذا (/version//(s+)/.test(ua)) {browser.ver = regexp ["$ 1"] ؛ browser.safari = parsefloat (browser.ver) ؛ } آخر {// تقريبًا تحديد رقم الإصدار var safariversion = 1 ؛ if (earch.webkit <100) {safariversion = 1 ؛ } if if (earch.webkit <312) {safariversion = 1.2 ؛ } if if (earch.webkit <412) {safariversion = 1.3 ؛ } آخر {safariversion = 2 ؛ } browser.safari = browser.ver = safariversion ؛ }} آخر إذا (/khtml//(s+)/.test(ua) ||/konqueror//( budap^ ؛ prof000)/.test(ua)) {earch.ver = browser.ver = regexp ["$ 1"] ؛ engine.khtml = browser.kong = parsefloat (engine.ver) ؛ } آخر if (/rv: ([^/)]+)/) gecko /// d {8}/. test (ua)) {earch.ver = regexp ["$ 1"] ؛ Engine.gecko = parsefloat (earch.ver) ؛ // حدد ما إذا كان Firefox if (/firefox// (s+)/.test(ua)) {browser.ver = regexp ["$ 1"] ؛ browser.firefox = parsefloat (browser.ver) ؛ }} آخر if (/msie ([^؛]+)/. test (ua)) {engine.ver = prowser.ver = regexp ["$ 1"] ؛ engine.ie = browser.ie = parsefloat (engine.ver) ؛ } // اكتشاف متصفح المستعرض. browser.opera = engine.opera ؛ // إرجاع هذه الكائنات إرجاع {المحرك: المحرك ، المتصفح: المتصفح}}} () ؛ console.log (client.engine) ؛ console.log (client.browser) ؛Tangram يكتشف رمز مصدر المتصفح
/*** إعلان حزمة baidu*/var baidu = baidu || {الإصدار: "1-3-2"} ؛ // meizz 20100513 ترقية guid to /x06baidu.guid = "$ baidu $" ؛ // اقترح GUID لمنع تعديل النافذة [غير محدد] 20100504 BERG/*** MEIZZ 2010/02/04* قد يتم اختطاف المجال الأعلى [BAIDU) نافذة [Baidu.Guid] || {} ؛/*** إعلان حزمة baidu.browser*/baidu.browser = baidu.browser || {} ؛/** * حدد ما إذا كان isgecko */baidu.browser.isgecko = /gecko/i.test(navigator.useragent) &&!/مثل gecko/i.test (navigator.useragent) ؛ /webkit/i.test(navigator.useragent) ؛/*** حدد ما إذا كان الوضع القياسي*/baidu.browser.isstrict = document.compatmode == "css1compat" ((/(/d+/. Browser*/if (/opera// /(/d+/. (/Chrome///(/d+/ {baidu.ie = baidu.browser.ie = document.documentMode || parsefloat (regexp ['/x241']) ؛}/*** حدد ما إذا كان متصفح Firefox*/if (/firefox//////diroser.firefox = parsefloat (regexp [ // '/x241' هو التدوين الثماني "/x24 '' الحرف المقابل '$' ، لذلك '/x241" يعادل "$ 1'}