Quelle est la bonne méthode (moderne) pour accéder à l'événement de redimensionnement de la fenêtre qui fonctionne dans Firefox, WebKit et Internet Explorer?
Et pouvez-vous activer / désactiver les deux barres de défilement?
javascript
jquery
cross-browser
resize
BuddyJoe
la source
la source
window.dispatchEvent(new Event('resize'));
stackoverflow.com/questions/1818474/…Réponses:
jQuery a une méthode intégrée pour cela:
Dans un souci de réactivité de l'interface utilisateur, vous pouvez envisager d'utiliser un setTimeout pour appeler votre code uniquement après un certain nombre de millisecondes, comme le montre l'exemple suivant, inspiré par ceci :
la source
$('.button').on({ click: function(){ /* your code */ $(window).trigger('resize') })
la source
Voici la manière non jQuery de puiser dans l'événement de redimensionnement:
Il fonctionne sur tous les navigateurs modernes. Il ne pas accélérateur quoi que ce soit pour vous. En voici un exemple en action.
la source
Désolé de faire apparaître un ancien fil, mais si quelqu'un ne veut pas utiliser jQuery, vous pouvez utiliser ceci:
la source
Puisque vous êtes ouvert à jQuery, ce plugin semble faire l'affaire.
la source
En utilisant jQuery 1.9.1, je viens de découvrir que, bien que techniquement identique) *, cela ne fonctionnait pas dans IE10 (mais dans Firefox):
alors que cela fonctionnait dans les deux navigateurs:
Edit :)
* En fait, pas techniquement identique, comme indiqué et expliqué dans les commentaires de WraithKenny et Henry Blyth .
la source
.resize()
à.bind('resize')
ou en ajoutant la fonction anonyme? Je pense que c'est la seconde.)adjustSize
méthode perd son contexte dethis
, alors que le second appelCmsContent.adjustSize()
conservethis
, iethis === CmsContent
. Si l'CmsContent
instance est requise dans laadjustSize
méthode, le premier cas échouera. Le deuxième cas fonctionnera pour chaque type d'appel de fonction, il est donc recommandé de toujours passer une fonction anonyme.jQuery
fournit une$(window).resize()
fonction par défaut:la source
Je considère que le plugin jQuery "jQuery resize event" est la meilleure solution pour cela car il prend en charge la limitation de l'événement afin qu'il fonctionne de la même manière sur tous les navigateurs. C'est similaire à la réponse d'Andrews mais mieux car vous pouvez accrocher l'événement de redimensionnement à des éléments / sélecteurs spécifiques ainsi qu'à la fenêtre entière. Il ouvre de nouvelles possibilités pour écrire du code propre.
Le plugin est disponible ici
Il y a des problèmes de performances si vous ajoutez beaucoup d'écouteurs, mais pour la plupart des cas d'utilisation, c'est parfait.
la source
Je pense que vous devriez ajouter plus de contrôle à ceci:
la source
j'espère que cela aidera dans jQuery
définissez d'abord une fonction, s'il existe une fonction existante, passez à l'étape suivante.
redimensionner le navigateur utiliser comme ceux-ci.
la source
Outre les fonctions de redimensionnement de fenêtre mentionnées, il est important de comprendre que les événements de redimensionnement se déclenchent beaucoup s'ils sont utilisés sans débouchant sur les événements.
Paul Irish a une excellente fonction qui résiste beaucoup aux appels de redimensionnement. Très recommandé à utiliser. Fonctionne sur plusieurs navigateurs. Testé dans IE8 l'autre jour et tout allait bien.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Assurez-vous de consulter la démo pour voir la différence.
Voici la fonction d'exhaustivité.
la source