سؤال

وأنا أعمل على بعض جافا سكريبت الذي يجعل من استخدام القدرة فايرفوكس 3.5 على أداء XMLHttpRequests عبر المجال ... ولكن أود أن تفشل بأمان إذا لم يتم دعمها.

وبعيدا عن الواقع جعل طلب عبر المجال، هل هناك أي طريقة للكشف عن دعم المتصفح بالنسبة لهم؟

هل كانت مفيدة؟

المحلول

لتكون مرجعا في المستقبل، CORS كامل ميزة الكشف ينبغي أن ننظر بشيء من هذا القبيل:

//Detect browser support for CORS
if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
    document.write("CORS supported (XHR)");
}
else if(typeof XDomainRequest !== "undefined"){
  //Use IE-specific "CORS" code with XDR
  document.write("CORS supported (XDR)");
}else{
  //Time to retreat with a fallback or polyfill
  document.write("No CORS Support!");
}

يمكنك محاولة هذا الاختبار مباشرة باستخدام JSBin ومعرفة الرد المناسب في IE، فايرفوكس، كروم، سفاري، و أوبرا.

وهناك بعض الحالات حافة في بيئات غير متصفح أن <م> القيام الدعم XHR عبر المجال ولكن ليس XHR2 / CORS. هذا الاختبار لا يأخذ في الحسبان تلك الحالات.

نصائح أخرى

ووفقا ل http://hacks.mozilla.org / 2009/07 / عبر الموقع، مدعوم مع-كر / الذي ينبغي أن يكون قادرا على استخدام:

if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
}

و(ملاحظة:. هناك تعليق على هذه الصفحة أن فشل كروم 2 هذا الاختبار [الرغم من أنها لا تدعم طلبات عبر النطاق] اختبرت كروم 3 واختبار والآن يمر)

ونضع في اعتبارنا أن لمجرد أن المتصفح قد دعم API عبر المجال لا يعني سيقوم الملقم الهدف تسمح طلب لإكمال.

وأنت قد ترغب في النظر في EasyXDM ، الذي يلتف المراوغات عبر المتصفح ويوفر استخدام سهلة API للتواصل في برنامج العميل النصي بين المجالات المختلفة باستخدام أفضل آلية متاحة لهذا المتصفح (مثل postMessage إذا كانت متوفرة، وآليات أخرى إن لم يكن).

ومن الواضح أن المكتبة قد حل المشكلة الكشف عن متصفح قدرات، حتى تتمكن من الاستفادة من خبراتهم. : -)

لديها

XDomainRequest الكائن والتي يمكن استخدامها لاسترداد RSS كنص يمكن فيما بعد تحليل في DOM.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top