كيف يمكنني معرفة ما إذا كان يتم تحميل البرنامج المساعد مسج؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

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

وتخيل أنك تقوم بتطوير البرنامج المساعد الذي يعتمد على المساعد أخرى يتم تحميلها.

وعلى سبيل المثال أريد مسج التحقق من صحة البرنامج المساعد لاستخدام المكتبة dateJS للتحقق مما إذا تاريخ معين هو صالح. ما هي أفضل طريقة للكشف، في البرنامج المساعد مسج Valdation إذا كان dateJS المتاحة؟

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

المحلول

وبصفة عامة، مسج الإضافات هي مساحة الأسماء على نطاق مسج. هل يمكن إجراء فحص بسيط لمعرفة ما إذا كان يوجد مساحة الاسم:

 if(jQuery().pluginName) {
     //run plugin dependent code
 }
لكن

وdateJs ليس المساعد مسج. عدلت / يمتد الكائن تاريخ جافا سكريبت، وعدم إضافة بمثابة مساحة مسج. هل يمكن أن تحقق إذا كان الأسلوب الذي تحتاجه موجود، على سبيل المثال:

 if(Date.today) {
      //Use the dateJS today() method
 }

ولكن قد واجهت مشاكل حيث يتراكب API في API التسجيل الأصلي.

نصائح أخرى

إذا كنا نتحدث عن البرنامج المساعد مسج الصحيح (على أن تمتد مساحة الاسم FN)، بعد ذلك الطريقة الصحيحة للكشف عن المكونات هي:

if(typeof $.fn.pluginname !== 'undefined') { ... }

وأو لأن كل المكونات ويضمن الى حد كبير في الحصول على بعض القيمة التي يعادل صحيحا، يمكنك استخدام أقصر

if ($.fn.pluginname) { ... }

وراجع للشغل، و$ ومسج وinterchangable، والمجمع تبحث الغريب حول البرنامج المساعد يوضح:

(function($) {
    //
})(jQuery))

وإغلاق

(function($) {
    //
})

ويليه مباشرة مكالمة إلى أن إغلاق 'تمر' مسج كمعلمة

(jQuery)

ويتم تعيين $ في إغلاق يساوي مسج

لكشف الإضافات مسج وجدت أكثر دقة لاستخدام الأقواس:

if(jQuery().pluginName) {
    //run plugin dependent code
}

وعن الإضافات التي لا تستخدم مساحة الجبهة الوطنية (على سبيل المثال pnotify)، وهذا يعمل:

if($.pluginname) {
    alert("plugin loaded");
} else {
    alert("plugin not loaded");
}

وهذا لا يعمل:

if($.fn.pluginname)

ومسج لديه طريقة لمعرفة ما اذا كان هناك شيء وظيفة

if ($.isFunction($.fn.dateJS)) {
    //your code using the plugin
}

مرجع API: https://api.jquery.com/jQuery.isFunction/

وأوصي بشدة أن حزمة مكتبة DateJS مع البرنامج المساعد الخاص بك وتوثيق حقيقة أن كنت قد فعلت ذلك. ليس هناك ما هو أكثر احباطا من الاضطرار إلى مطاردة التبعيات.

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

وتشغيل هذا في وحدة متصفحك الاختيار.

وif(jQuery().pluginName){console.log('bonjour');}

إذا موجود المساعد سوف طباعة "صباح الخير" كرد في وحدة التحكم.

وهذا النوع من النهج يجب أن تعمل.

var plugin_exists = true;

try {
  // some code that requires that plugin here
} catch(err) {
  plugin_exists = false;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top