J'utilise une fonction de charge paresseux le moteur de sélecteur Sizzle (utilisé par jQuery):Comment transmettre un nombre variable de paramètres avec une fonction de rappel?
var sizzle_loaded;
// load the Sizzle script
function load_sizzle(module_name) {
var script;
// load Sizzle script and set up 'onload' and 'onreadystatechange' event
// handlers to ensure that external script is loaded before dependent
// code is executed
script = document.createElement('script');
script.src = 'sizzle.min.js';
script.onload = function() {
sizzle_loaded = true;
gather_content(module_name);
};
script.onreadystatechange = function() {
if ((script.readyState === 'loaded' || script.readyState === 'complete') &&
!sizzle_loaded) {
sizzle_loaded = true;
gather_content(module_name);
}
};
// append script to the document
document.getElementsByTagName('head')[0].appendChild(script);
}
je définir les onload
et onreadystatechange
gestionnaires d'événements, ainsi que le drapeau sizzle_loaded
d'appeler une autre fonction (gather_content()
) dès que Sizzle est chargé. Tout cela est nécessaire pour faire cela de manière croisée.
Jusqu'à présent, mon projet ne devait charger que Sizzle à un moment donné dans le script, donc j'ai pu coder en dur l'appel de fonction gather_content()
dans la fonction load_sizzle()
.
Cependant, j'ai maintenant besoin de charger Sizzle à deux endroits différents dans le script, et d'appeler une fonction différente chaque fois qu'une fois chargé. Mon premier instinct était de modifier la fonction d'accepter une fonction de rappel:
var sizzle_loaded;
// load the Sizzle script
function load_sizzle(module_name, callback) {
var script;
// load Sizzle script and set up 'onload' and 'onreadystatechange' event
// handlers to ensure that external script is loaded before dependent
// code is executed
script = document.createElement('script');
script.src = 'sizzle.min.js';
script.onload = function() {
sizzle_loaded = true;
callback(module_name);
};
script.onreadystatechange = function() {
if ((script.readyState === 'loaded' || script.readyState === 'complete') &&
!sizzle_loaded) {
sizzle_loaded = true;
callback(module_name);
}
};
// append script to the document
document.getElementsByTagName('head')[0].appendChild(script);
}
Ensuite, je pouvais l'appeler comme ceci:
load_sizzle(module_name, gather_content);
Cependant, l'autre fonction de rappel que je dois utiliser prend plus de paramètres que gather_content()
fait.
Comment puis-je modifier ma fonction afin de pouvoir spécifier un nombre variable de paramètres à transmettre avec la fonction de rappel? Ou, est-ce que je vais à ce sujet dans le mauvais sens?
Finalement, je veux juste charger Sizzle, puis appeler toute fonction dont j'ai besoin (avec les arguments dont il a besoin) une fois le chargement terminé.
Merci pour toute aide!
Génial, merci, Peter! – Bungle