Voici une modification de la solution de CMS qui peut être appelée à plusieurs endroits dans votre code :
var waitForFinalEvent = (function () {
var timers = {};
return function (callback, ms, uniqueId) {
if (!uniqueId) {
uniqueId = "Don't call this twice without a uniqueId";
}
if (timers[uniqueId]) {
clearTimeout (timers[uniqueId]);
}
timers[uniqueId] = setTimeout(callback, ms);
};
})();
Utilisation :
$(window).resize(function () {
waitForFinalEvent(function(){
alert('Resize...');
//...
}, 500, "some unique string");
});
La solution de CMS est bonne si vous ne l'appelez qu'une seule fois, mais si vous l'appelez plusieurs fois, par exemple si différentes parties de votre code mettent en place des rappels séparés pour le redimensionnement de la fenêtre, alors elle échouera car elles partagent l'adresse de l'utilisateur. timer
variable.
Avec cette modification, vous fournissez un identifiant unique pour chaque rappel, et ces identifiants uniques sont utilisés pour séparer tous les événements de délai d'attente.
0 votes
Voir cette réponse : stackoverflow.com/questions/667426/ Elle implique l'utilisation de délais d'attente pour retarder l'exécution de votre fonction.
0 votes
Je ne sais pas si c'est possible, mais vous pouvez essayer ce plugin. benalman.com/projets/jquery-resize-plugin
0 votes
Au fait, j'ai remarqué que cela est très utile dans les navigateurs mobiles qui ont tendance à masquer progressivement la barre d'adresse lorsque l'utilisateur fait défiler l'écran vers le bas, donc le redimensionne. Je m'attendais également à ce que le redimensionnement de l'écran ne se produise que sur le bureau...