Maison >interface Web >js tutoriel >$ .getscript mutile scripts

$ .getscript mutile scripts

William Shakespeare
William Shakespeareoriginal
2025-03-04 00:18:10885parcourir

Cette méthode améliorée $.getScript charge efficacement plusieurs fichiers JavaScript et exécute une fonction de rappel uniquement après que tous les scripts se soient chargés avec succès. Cela évite les complexités des rappels imbriqués ("Hellback Hell") souvent rencontrés lors du chargement de plusieurs scripts séquentiellement.

$.getScript mutiple scripts

La fonction d'origine unique Script $.getScript est illustrée ci-dessous à la comparaison:

$.getScript('script1.js', function(data, textStatus) {
    // Code to execute after script1.js loads
});

La version améliorée gère un tableau d'URL de script:

/* Enhanced $.getScript to handle multiple scripts */
var getScript = jQuery.getScript;
jQuery.getScript = function(resources, callback) {
    let length = resources.length,
        handler = function() { counter++; },
        deferreds = [],
        counter = 0,
        idx = 0;

    for (; idx < length; idx++) {
        deferreds.push(getScript(resources[idx], handler));
    }

    jQuery.when.apply(null, deferreds).then(function() {
        callback && callback();
    });
};

// Example usage:
$.getScript(['script1.js', 'script2.js', 'script3.js'], function() {
    // Code to execute after all scripts load
});

// Alternative using a separate array:
var scripts = ['script1.js', 'script2.js', 'script3.js'];
$.getScript(scripts, function(data, textStatus) {
    // Code to execute after all scripts load
});

Une approche alternative, utile lorsqu'un script nécessite un rappel, est démontré ici:

$.get("js/ext/flowplayer-3.2.8.min.js")
  .pipe($.get("js/eviflowplayer.js"))
  .pipe($.get("js/evi.flowplayer.js", {}, function() {
      W.EVI.FLOWPLAYER.init(elem.attr('id'));
  }));

Questions fréquemment posées (FAQ):

Cette section aborde les questions courantes sur $.getScript et le chargement de plusieurs scripts. La section FAQ d'origine a été réorganisée et réécrite pour plus de clarté et de concision.

  • Qu'est-ce que $.getScript? $.getScript est une fonction jQuery qui charge et exécute un fichier javascript de manière asynchrone via une demande de GET HTTP. C'est une version simplifiée de $.ajax().

  • Comment charger plusieurs scripts? Le code amélioré ci-dessus fournit une solution robuste. Le chaînage $.get (comme dans l'exemple alternatif) convient aux situations avec une exigence de rappel spécifique pour un seul script.

  • Avantages de $.getScript? Améliore les performances de charge de page en chargeant des scripts à la demande, améliore l'organisation du code et favorise la réutilisabilité du code.

  • Gestion des erreurs? Bien qu'il ne soit pas explicitement affiché dans le code fourni, la gestion des erreurs peut être implémentée en utilisant $.ajax().fail().

  • Le partage des ressources d'origine croisée (CORS)? $.getScript prend en charge CORS, mais le succès dépend de la configuration CORS du serveur.

  • Chargement synchrone? $.getScript est intrinsèquement asynchrone. Pour le chargement synchrone, utilisez $.ajax({ async: false }), mais soyez conscient des implications potentielles de performance.

  • Chargement des fichiers non javascript? $.getScript est spécifiquement pour les fichiers javascript.

  • scripts avec dépendances? L'ordre d'exécution n'est pas garanti avec le chargement asynchrone. La solution fournie garantit que tous les scripts se chargent avant l'exécution du rappel, résolvant les problèmes de dépendance.

  • Chargement des scripts dans une boucle? Bien que possible, la nature asynchrone nécessite un examen attentif de l'ordre d'exécution. Le $.getScript amélioré le gère efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn