Forma correcta de anular un método de JQuery Mobile en $ .mobile

La aplicación JQuery Mobile en la que estoy trabajando tiende a enloquecer cuando se inicia el teclado virtual. He implementado una solución y funciona bien, pero tuve que editar jquery.mobile-1.2.0.js directamente para hacerlo. Prefiero mantener mis cambios en un archivo jquery.mobile.customizations.js, que se extiende a jQuery Mobile.

Intenté hacer lo siguiente sin éxito:

delete $.mobile.getScreenHeight; $.mobile.last_width = null; $.mobile.last_height = null; $.mobile.getScreenHeight = function() { // My modified version } 

$.mobile.getScreenHeight declaraciones de alerta en mi $.mobile.getScreenHeight , más el original $.mobile.getScreenHeight . Vi cómo se activaba la alerta de mi método personalizado, pero en ocasiones, también activaba la alerta en la función original.

¿Alguien sabe la forma correcta de anular un método en $ .mobile y también agregar dos nuevas propiedades?

(Los detalles completos sobre el problema original están en window.resize debido a que el teclado virtual causa problemas con jquery mobile )

Actualizar:

@elclanrs – He intentado implementar el código siguiente sin suerte. También he intentado cambiar el segundo y tercer parámetro. Cada vez que ejecuto el código, dispara mi getScreenHeight extendido, pero luego dispara la base getScreenHeight. (Vacié el getScreenHeight original y puse una alerta en el interior. Esa alerta nunca debería dispararse.

Abierto para pensamientos!

 $.mobile = $.extend( {}, $.mobile, { last_width: null, last_height: null, getScreenHeight: function() { // My code... } } ); 

La línea ofensiva parece ser un getScreenHeight = $.mobile.getScreenHeight; que coloca la definición actual dentro de un cierre para la función resetActivePageHeight . No estoy seguro de que sea posible anular esto directamente sin editar el archivo, pero es posible que puedas evitarlo:

  //simply set the active page's minimum height to screen height, depending on orientation function resetActivePageHeight() { var aPage = $( "." + $.mobile.activePageClass ), aPagePadT = parseFloat( aPage.css( "padding-top" ) ), aPagePadB = parseFloat( aPage.css( "padding-bottom" ) ), aPageBorderT = parseFloat( aPage.css( "border-top-width" ) ), aPageBorderB = parseFloat( aPage.css( "border-bottom-width" ) ); aPage.css( "min-height", getScreenHeight() - aPagePadT - aPagePadB - aPageBorderT - aPageBorderB ); } //set page min-heights to be device specific $( document ).bind( "pageshow", resetActivePageHeight ); $( window ).bind( "throttledresize", resetActivePageHeight ); 

Definir tu propio resetActivePageHeight luego unbind y bind a esos de nuevo podría hacer el truco. Es un poco desordenado

    Intereting Posts