document.location.href = ‘# location’; vs. $ .mobile.changePage (‘# location’);

¿Cuál es la diferencia entre estas dos redirecciones? Tengo una aplicación que funciona correctamente en Chrome y Android 4, cuando uso, pero no en Android 2.xx

document.location.href='#location'; 

Pero cuando uso

 $.mobile.changePage('#location'); 

No funciona correctamente ni en Chrome ni en Android. La redirección parece ocurrir, pero inmediatamente después salta a la página de índice de mi aplicación.

$.mobile.changePage es un método de estilo jQM para la navegación. Lo que significa que si tiene habilitada la navegación AJAX (está habilitada de manera predeterminada), la página a la que se vinculó se buscará de forma asíncrona y se inyectará en el DOM de la página actual.

Esto se hace obteniendo la página de destino, explorándola en busca de la página jQM (elemento contenedor con data-role='page' ), inyectando ese elemento en el DOM actual y lo muestra, mientras oculta el contenido anterior.

Consulte la documentación de jQuery Mobile para obtener más detalles.

Asegúrate de eso

  • tu página de destino tiene una página de jQuery Mobile
  • La página de destino es recuperada por jQM (usando Fiddler o una herramienta similar)
  • que existe en DOM de la página actual

También puede decidir deshabilitar la navegación AJAX (lo cual es una idea equivocada al desarrollar aplicaciones móviles). Esto se hace configurando ajaxEnabled en falso en el controlador de mobileinit . Para más detalles verifique la documentación de configuración de jQM . Asegúrese de que su gancho mobileinit se ejecute antes de incluir jquery-mobile.js en su página.

Prueba esto:

 $.mobile.changePage( "#location", { transition: "pop", reverse: false, changeHash: false }); 

jQuery Mobile expone varios métodos y propiedades en el objeto $ .mobile para usar en sus aplicaciones.

Asegúrese de que el documento esté listo antes de usar $.mobile.changepage contrario no funcionará. Esto será un problema si está utilizando la redirección automática a una página diferente después de algún evento en una página determinada.

  $(document).ready(function(){ $.mobile.changepage('xyz.html'); } 

Prueba esto:

  webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(//url filtering){ view.loadUrl(url); } return true; } });