¿Cómo puedo hacer que JavaScript y las imágenes en mi página HTML remota se carguen desde la carpeta de activos (o cualquier recurso local)?Android WebView JavaScript desde los recursos
Respuesta
Respuesta:
1. Se debe cargar el HTML en cadena:
private String readHtml(String remoteUrl) {
String out = "";
BufferedReader in = null;
try {
URL url = new URL(remoteUrl);
in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
out += str;
}
} catch (MalformedURLException e) {
} catch (IOException e) {
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return out;
}
2. Cargar vista web con URL base:
String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
En este caso particular, usted debe tener todos los archivos .js que desee utilizar en la página para residir en algún lugar en la carpeta de "activos" del proyecto. Por ejemplo:
/MyProject/assets/jquery.min.js
3. En su página html a distancia tiene que cargar .js y .css que residen en su aplicación como:
<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>
lo mismo se aplica a todos los demás locales recursos como imágenes, etc. su camino tiene que empezar con
file:///android_asset/
Una vista web se cargue primero el HTML puro que haya proporcionado como una cadena, a continuación, elegir .js, .css y otros recursos locales y luego cargarían contenido remoto.
¿Por qué debería tener que proporcionar la ruta absoluta si establece la ruta base con 'loadDataWithBaseURL'? Además, parece que esto se rompe en 4.1+. :( – Maarten
Esto parece funcionar en 4.1+ para mí, y hasta ahora es la única forma en que he podido cargar HTML con javascript que no está codificado en la carpeta de activos. – Chris
Si el html ya está remoto, no hay posibilidad para editar el programa debe identificar estos archivos y reemplazar la cadena de * String html * – htafoya
Si crea dinámicamente su HTML y luego utiliza loadDataWithBaseURL, asegúrese de que todos los recursos locales, p. javascript en su carpeta de activos se mencionan en el HTML como archivo: /// (I Pasé horas resolviendo esto)
¿me puede decir en detalle cómo agregar dinámicamente la ruta (archivo: //) a .js después de obtener html como cadena? – Adi
- 1. Android WebView Javascript getSelection
- 2. Cargando javascript en un UIWebView desde los recursos
- 3. Llamar a la función Java desde JavaScript sobre Android WebView
- 4. Cómo hacer que los GIF animados funcionen desde Android WebView
- 5. Android WebView + LoadURL con javascript + onPageFinished = lag
- 6. JWPlayer API de Javascript para Android Webview
- 7. android - Cómo hacer una llamada desde webview
- 8. Android WebView Protocol Handler
- 9. Android WebView no carga jQuery
- 10. Android - Cómo ejecutar el intento desde JavaScript
- 11. Android, Webview, obtenga los datos del formulario
- 12. Android Webview navegación privada
- 13. Android WebView rendimiento
- 14. Android WebView - Configuración del foco del campo HTML usando Javascript
- 15. Enlace a recursos dentro de WebView - iPhone
- 16. Android NDK: compilación WebView personalizada desde la fuente
- 17. Android 3.x SÓLO WebView selección de texto + JavaScript
- 18. ¿Puedo pasar un objeto Javascript a un Android WebView?
- 19. Añadir javascript a WebView
- 20. Rellenar formulario en WebView con Javascript
- 21. Android: abrir un ContextMenu desde onLongPress en WebView personalizado
- 22. Android WebView canGoBack siempre verdadero
- 23. alerta Modificar() del título (Javascript en Android Webview)
- 24. Android: problema con la depuración de JavaScript en webview
- 25. Android Webview POST
- 26. Android webView saveState
- 27. Android WebView TimeOut
- 28. Android WebView onReceivedError()
- 29. Android WebView removeCookie
- 30. Android: WebView ActionBar (Honeycomb)?
Debe poner la respuesta en una respuesta para que podamos marcar esto como cerrado. –