أفضل الممارسات من أجل الكشف عن اياكس/XmlHttpRequestSupport

StackOverflow https://stackoverflow.com/questions/305894

  •  08-07-2019
  •  | 
  •  

سؤال

أنا أحاول تحديث قديم وظيفة جافا سكريبت تستخدم للكشف عن دعم اياكس (أيفإن الكائن مدعوم).لقد بحثت على شبكة الإنترنت (بما في ذلك) وجدت العديد من الحلول ولكن لست متأكدا من الذي هو الأكثر كفاءة لمجرد الكشف عن الدعم.

الوظيفة الحالية هي:

    function IsSyncAJAXSupported()
    {
        var isSyncAJAXSupported = true;

        var xmlHttp = null;
        var clsids = ["Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
        for(var i=0; i<clsids.length && xmlHttp == null; i++) {
            try {
                    xmlHttp = new ActiveXObject(clsids[i]);
            } catch(e){}
        }

        if(xmlHttp == null && MS.Browser.isIE)
        {
            isSyncAJAXSupported = false;
        }
        return isSyncAJAXSupported;
    }

في فايرفوكس 3 أعلاه يعطي أخطاء بسبب مرض التصلب العصبي المتعدد هو غير معروف.

أدرك ذلك باستخدام مكتبة سيكون أفضل ولكن هذا ليس خيارا على المدى القصير.نحن فقط دعم IE6 و فوق + أحدث الإصدارات من فايرفوكس, سفاري/بكت الأوبرا.

ما هي أفضل طريقة للحصول على true/false مدعوم دعم ؟

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

المحلول 3

وجئت مع هذا:

var xhr = null;
try { xhr = new XMLHttpRequest(); } catch (e) {}
try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
return (xhr!=null);

ويبدو للعمل حتى اعتقدت أن المشاركة فيها.

نصائح أخرى

لا!

أو بالأحرى لا تضيع الوقت في إنجاز العديد من الأشخاص الآخرين قد فعلت أفضل.

محاولة الاستيلاء على مصدر مسج أو somesuch و "استعارة" تلك الأساليب ؛ لقد استثمرت الوقت إلى دعم العديد من المتصفحات ممكن (خصوصا في مسج حالة) لذا وفر على نفسك الوقت.

HTH

قانون بلدي المفضل لذلك هو:

function CreateXMLHttpRequest()
{
  // Firefox and others
  try { return new XMLHttpRequest(); } catch (e) {}
  // Internet Explorer
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  //alert("XMLHttpRequest not supported");
  // No luck!
  return null;
}

ويمكنك بسهولة إضافة اختبارات لأنواع من كائنات Microsoft ...

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