jquery android mobile cordova

La relación entre las funciones "onBodyLoad()/onDeviceReady()" de Phonegap y "$(document).ready()" de Jquery



cordova jquery (1)

Estoy usando PhoneGap + jQuery Mobile en Android, estoy confundido acerca de las funciones "onBodyLoad () / onDeviceReady ()" de Phonegap y "$ (document) .ready ()" de Jquery.

En documentos PhoneGap:

PhoneGap consta de dos bases de código: nativo y JavaScript. Mientras se carga el código nativo, se muestra una imagen de carga personalizada. Sin embargo, JavaScript solo se carga una vez que se carga DOM. Esto significa que su aplicación web podría, potencialmente, llamar a una función PhoneGap JavaScript antes de que se cargue.

El evento de generación de dispositivos PhoneGap se dispara una vez que PhoneGap se haya cargado por completo. Después de que el dispositivo se disparó, puede realizar llamadas de manera segura a la función PhoneGap.

Normalmente, querrá adjuntar un detector de eventos con document.addEventListener una vez que se haya cargado el DOM del documento HTML.

En jQuery doc:

Si bien JavaScript proporciona el evento de carga para ejecutar el código cuando se procesa una página, este evento no se desencadena hasta que todos los activos, como las imágenes, se hayan recibido por completo. En la mayoría de los casos, la secuencia de comandos se puede ejecutar tan pronto como la jerarquía DOM se haya construido por completo. Se garantiza que el controlador pasado a .ready () se ejecutará después de que el DOM esté listo, por lo que este suele ser el mejor lugar para adjuntar todos los demás controladores de eventos y ejecutar otro código jQuery. Cuando se utilizan scripts que se basan en el valor de las propiedades de estilo CSS, es importante hacer referencia a las hojas de estilo externas o incrustar elementos de estilo antes de hacer referencia a los scripts.

En los casos en que el código se basa en activos cargados (por ejemplo, si se requieren las dimensiones de una imagen), el código debe colocarse en un controlador para el evento de carga en su lugar.

Mis experimentos muestran que ready () siempre es anterior a onDeviceReady (), ¿cómo explicar esto? ¿Cómo debería usarlos? ¿Debo poner listo () en onDeviceReady () para hacer que cada llamada sea segura?

Gracias de antemano.

Saludos, Chris


$(document).ready siempre se activará primero porque se activa cuando se cargaron todos los elementos DOM. Las imágenes, las funciones de Javascript, css, etc. pueden no haberse cargado en este momento.

Entonces, PhoneGap le pide que coloque el método de onLoad método onLoad del cuerpo para que se dispare cuando esa parte particular del DOM esté lista. Una vez que el DOM está preparado, usted crea un detector de eventos para asegurarse de que phonegap.js esté listo (y no solo la interfaz de usuario de la aplicación, por ejemplo). Solo después de cargar phonegap.js, puede usar las funciones que proporciona.

Entonces, sí, $(document).ready activará primero, pero eso no significa que pueda usar phonegap.js (las llamadas ''api''). No puede poner $(document).ready dentro de otra función (hasta donde yo sé), ya que se desencadena por el DOM que se está cargando. Puede (pero no debe) llamar a su función onDeviceReady desde $(document).ready . $(document).ready . El problema con esto es que si el dispositivo NO está de hecho listo, las llamadas de API no se realizarán.

Así que continuaría usando la cadena body onLoad / onDeviceReady que han configurado. Avíseme si esto requiere más elaboración.