¿Cuál es el método correcto (moderno) para aprovechar el evento de cambio de tamaño de ventana que funciona en Firefox, WebKit e Internet Explorer?
¿Y puede activar / desactivar ambas barras de desplazamiento?
javascript
jquery
cross-browser
resize
BuddyJoe
fuente
fuente
window.dispatchEvent(new Event('resize'));
stackoverflow.com/questions/1818474/…Respuestas:
jQuery tiene un método incorporado para esto:
En aras de la capacidad de respuesta de la interfaz de usuario, puede considerar usar un setTimeout para llamar a su código solo después de una cierta cantidad de milisegundos, como se muestra en el siguiente ejemplo, inspirado en esto :
fuente
$('.button').on({ click: function(){ /* your code */ $(window).trigger('resize') })
fuente
Aquí está la forma no jQuery de aprovechar el evento de cambio de tamaño:
Funciona en todos los navegadores modernos. Lo hace no del acelerador cualquier cosa por ti. Aquí hay un ejemplo de ello en acción.
fuente
Lamento traer un hilo viejo, pero si alguien no quiere usar jQuery, puede usar esto:
fuente
Como está abierto a jQuery, este complemento parece ser el truco.
fuente
Usando jQuery 1.9.1 acabo de descubrir que, aunque es técnicamente idéntico *, esto no funcionó en IE10 (sino en Firefox):
Si bien esto funcionó en ambos navegadores:
Editar :)
* En realidad no es técnicamente idéntico, como se señaló y explicó en los comentarios de WraithKenny y Henry Blyth .
fuente
.resize()
A.bind('resize')
? O la adición de la función anónima que estoy pensando que es el segundo.)adjustSize
método pierde su contexto dethis
, mientras que la segunda llamadaCmsContent.adjustSize()
conservathis
, es decirthis === CmsContent
. SiCmsContent
se requiere la instancia en eladjustSize
método, el primer caso fallará. El segundo caso funcionará para cada tipo de llamada de función, por lo que se recomienda pasar siempre una función anónima.jQuery
proporciona la$(window).resize()
función por defecto:fuente
Considero que el complemento jQuery "jQuery resize event" es la mejor solución para esto, ya que se encarga de limitar el evento para que funcione igual en todos los navegadores. Es similar a la respuesta de Andrews, pero mejor ya que puede conectar el evento de cambio de tamaño a elementos / selectores específicos, así como a toda la ventana. Abre nuevas posibilidades para escribir código limpio.
El complemento está disponible aquí.
Hay problemas de rendimiento si agrega muchos oyentes, pero para la mayoría de los casos de uso es perfecto.
fuente
Creo que deberías agregar más control a esto:
fuente
espero que ayude en jQuery
defina una función primero, si hay una función existente salte al siguiente paso.
uso de cambio de tamaño del navegador como estos.
fuente
Además de las funciones de cambio de tamaño de ventana mencionadas, es importante comprender que los eventos de cambio de tamaño se disparan mucho si se usan sin desestimar los eventos.
Paul Irish tiene una excelente función que elimina mucho las llamadas de cambio de tamaño. Muy recomendado para usar. Funciona entre navegadores. Lo probé en IE8 el otro día y todo estuvo bien.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Asegúrese de revisar la demostración para ver la diferencia.
Aquí está la función para completar.
fuente