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

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

En los documentos de PhoneGap:

PhoneGap se compone 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 sólo se carga una vez que se carga el DOM. Esto significa que su aplicación web podría, potencialmente, llamar a una función de JavaScript de PhoneGap antes de que se cargue.

El evento PhoneGap deviceready se activa una vez que PhoneGap se ha cargado completamente. Una vez que el dispositivo se haya disparado, puede realizar llamadas de forma segura a la función PhoneGap.

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

En jQuery doc:

Mientras que JavaScript proporciona el evento de carga para ejecutar el código cuando se procesa una página, este evento no se activa hasta que todos los elementos, como las imágenes, se hayan recibido completamente. En la mayoría de los casos, la secuencia de comandos se puede ejecutar tan pronto como la jerarquía DOM ha sido completamente construida. El manejador pasado a .ready () está garantizado para ser ejecutado después de que el DOM está listo, por lo que este es generalmente el mejor lugar para adjuntar todos los otros manejadores 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 hojas de estilo externas o integrar 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.

Mis experimentos demuestran que ready () es siempre anterior que onDeviceReady (), ¿cómo explicar esto? ¿Cómo debo usarlos? ¿Debo poner listo () en onDeviceReady () para hacer que todas las llamadas sean seguras?

Gracias de antemano.

Saludos, Chris

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

Así PhoneGap ha puesto el método onload en el método onLoad del cuerpo para que se active cuando esa parte particular del DOM está lista. Una vez que el DOM está preparado, crea un detector de eventos para asegurarse de que phonegap.js esté listo (y no sólo la interfaz de usuario de la aplicación, por ejemplo). Sólo después de cargar phonegap.js puede utilizar las funciones que proporciona.

Así que sí, $(document).ready disparará primero, pero eso no significa que usted puede usar phonegap.js (las llamadas 'api'). Usted no puede poner $(document).ready dentro de otra función (por lo que sé), ya que se activa por el DOM que se está cargando. Puede (pero no debe) llamar a su función onDeviceReady desde $(document).ready . El problema con esto es que si el dispositivo no está en realidad listo, las llamadas api no se realizará.

Así que seguiría utilizando el cuerpo onLoad / onDeviceReady cadena que han creado. Déjeme saber si esto necesita más elaboración.

  • ¿Necesito un dispositivo Android real para desarrollar una aplicación de Android para el mercado?
  • Cómo guardar credenciales en Android / jQuery Mobile App
  • Marco para la funcionalidad de chat que soporta todas las plataformas móviles y la aplicación web .net
  • ¿Cuál es el mejor enfoque para desarrollar una aplicación móvil multiplataforma?
  • Las etiquetas de aceptación y captura de archivos fallan en la vista web de cruce de peatones
  • Sincronización de la base de datos móvil
  • Android TimePicker no se muestra bien en modo horizontal
  • ¿Cómo cambiar el tamaño de pantalla de PhoneGap?
  • Cómo obtener una matriz String con código java de la lista <string-item> en arrays.xml en Android?
  • Jquery, ¿cómo probar un navegador móvil?
  • ¿Utilizando appMobi puedo crear aplicaciones para Android y aplicaciones para iPhone de forma gratuita (además de los costos de Google / Apple)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.