سؤال

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. بمجرد التحميل ، هل يتم تخزينه مؤقتًا أم أنه يتم تحميله مرة أخرى إذا تمت الإشارة إليه أكثر من مرة؟
  2. إذا كان الحدث يعتمد على هذا الملف الذي يتم تحميله ، فهل سيتم تأخير الحدث من الفشل/المهلة في حالة استغرق الملف وقتًا أطول لتحميله أو لا يتم تحميله؟
  3. كيف يمكنني التحقق من التحميل والقيام بشيء ما في حالة فشل الملف لسبب ما؟

شكرا مقدما لمساعدتكم.

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

المحلول

1) لا يتم تخريب طلبات jQuery للبرامج النصية عبر Ajax إلا إذا حددت ذلك كخيار في وظيفة $ .ajax (). من توثيق:

"ذاكرة التخزين المؤقت ، منطقية

الافتراضي: صحيح ، خطأ لنوع البيانات "البرنامج النصي" و "JSONP"

إذا تم ضبطها على خطأ ، فسوف يجبر الصفحات التي تطلبها ألا يتم تخزينها مؤقتًا من قبل المتصفح. "

2) أعتقد أنني بحاجة إلى رؤية نموذج رمز لفهم هذا الجزء من السؤال.

3) لا يمكنك فعل أي شيء إذا فشل $ .getScript (). ولكن ، يجب أن تدرك أن $ .getScript () هو مجرد نسخة قصيرة من $ .ajax () ، ملتصقة بـ:

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  }
});

هذا يعني أنه يمكنك تنفيذ error رد الاتصال ، للقيام بشيء ذكي إذا فشل الملف في التحميل ، أي:

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert("panic");
  }
});

نصائح أخرى

بالإضافة إلى إجابة غلين ، أود أن أقدم خيارًا آخر:

$.getScript({
    url: "foo.js",
    cache: true // or false, depending on your preference. in most cases you would want it true.
}).done(function(){ 
    // do something when script was loaded and run
}).fail(function(){
    // do something when script failed to load
});

مدعوم على jQuery 1.12.0+

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