2008-12-11 21 views
9

Tengo una aplicación pesada javascript que tiene widgets como listas desplegables y pestañas autocompletar, y así sucesivamente. A veces, cuando aparecen y desaparecen los menús desplegables, cambia la altura del documento. Esto puede causar molestias si la barra de desplazamiento aparece y desaparece rápidamente, ya que cambia la página. Me gustaría detectar cuando una página cambia su altura, por lo que puedo fijar la altura al máximo hasta el momento, de modo que si aparece la barra de desplazamiento no desaparecerá solo un segundo después. ¿Alguna sugerencia?¿Cómo detectar cuándo cambia la altura de su página?

Actualización: onresize no funcionará porque eso es para cambios en el tamaño de la ventana/ventana - Quiero cambios en la longitud del documento. No sabía sobre la función de reloj, parece que funcionará al menos para FF, pero IE no lo admite.

+2

duplicado posible de [Detectar Altura Modificar Documento ] (http://stackoverflow.com/questions/14866775/detect-document-height-change) – Aziz

Respuesta

-1

Una idea sería utilizar el método de reloj() en la propiedad clientHeight:

document.body.watch("clientHeight", function(property, oldHeight, newHeight) { 
    // what you want to do when the height changes 
}); 

La función especifica se ejecutará cada vez que cambie la propiedad especificada. En cualquier punto, puede usar el método unwatch() para detenerlo.

+5

Vea la [advertencia roja grande aquí] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch)? ** "En general, debe evitar usar watch() y unwatch() cuando sea posible. Estos dos métodos se implementan solo en Gecko, y están destinados principalmente a la depuración. Además, el uso de watchpoints tiene un grave impacto negativo en el rendimiento" ** – TMS

-1

Puede usuario cambiar el tamaño de evento para atrapar el cambio del tamaño de la ventana usando jQuery de la siguiente manera:

$(window).resize(function(){ 
    // your code to check sizes and take action 
    } 
); 

Alternativamente se puede realizar un seguimiento de los cambios en el documento (no probado)

$(document).resize(function(){ 
    // your code to check sizes and take action 
    } 
); 
1

I cree que esta pregunta ya ha sido respondida en stackoverflow aquí: Detect Document Height Change

Básicamente, tiene que almacenar el docum actual ent altura y mantener la comprobación de un cambio a través de una timeoutcall

El elemento de ver aquí es document.body.clientHeight (o en jQuery $ (document) .height())

Cuestiones relacionadas