Javascript no funciona en una actividad de WebView
Tengo una actividad que tiene sólo un WebView , que contiene código HTML, CSS y Javascript.
Parece que hay un problema con el acceso de Javascript al tamaño de pantalla de la vista. LogCat dice:
- Cómo obtener texto seleccionado en WebView Android
- PictureListener está obsoleto y obsoleto, ¿hay un reemplazo?
- WebView debe cargarse dos veces para cargar correctamente
- Abrir un archivo html ubicado dentro de mi aplicación usando WebView
- Obtener el ancho de contenido de Android WebView con desplazamiento vertical después de cargar la página
(Tag: Web Console): Uncaught TypeError: Cannot call method 'getWidth' of undefined at file:///android_asset/Prospekte/grund/html5-player/js/epaper-mobile.js:20
Cuando miro el archivo js, hay: var f=this.body.getWidth();
Lo curioso es que a veces el código funciona . El epaper se muestra bien. Pero la mayoría de las veces hay este error.
setContentView(R.layout.prospekt_layout); final Activity activity = this; mWebView = (WebView) findViewById(R.id.prospekt_webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setProgress(progress * 1000); } }); mWebView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // Handle the error } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); mWebView.loadUrl("file:///android_asset/Prospekte/modKachel/mobile.html");
El diseño es:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" > <WebView android:id="@+id/prospekt_webview" android:layout_width="900px" android:layout_height="900px" /> </LinearLayout>
He cambiado el tamaño de la webView causa que pensé que esto podría ser la solución .. pero no es trabajar con dp tampoco.
Alguien tiene en la idea?
- ¿Cómo puedo ver los encabezados de solicitudes en las solicitudes de Android WebView?
- WebView no carga mi HTML la segunda vez?
- La vista web de Android no puede convertir el video de youtube incrustado a través de iframe
- Interrupciones de la interfaz de Android 4.2.1, WebView y javascript
- Webview con pantalla completa en android
- Url abierta en pantalla completa en lugar de Webview
- El mejor enfoque para pasar datos desde la vista web a la aplicación nativa (Windows, iOS y Android)
- Android Fatal señal 11 (SIGSEGV) en WebViewCoreThre
Establezca esta configuración también para su webView:
WebSettings settings = webView.getSettings(); settings.setDomStorageEnabled(true);
Para más detalles consulte la respuesta en el siguiente enlace: ERROR / Web Console: Uncaught TypeError: No se puede llamar al método 'getItem' de null en http://m.youtube.com/:844
Actualizar: o agregar esto podría ayudar:
webView.loadDataWithBaseURL("fake://fake.com", myString, "text/html", "UTF-8", null);
Debe implícitamente habilitar la ejecución de JavaScript en su WebView, ya que esto podría causar XSS y otras vulnerabilidades.
web = new WebView(this); web.getSettings().setJavaScriptEnabled(true);
Además, prefiero establecer mi WebViewClient a través de
WebViewClient webViewMainWebClient = new WebViewClient() { // Override page so it's load on my view only @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // Return true to override url loading (In this case do nothing). return false; } } web.setWebViewClient(this.webViewMainWebClient);
Para permitirme restringir el uso de sólo mis sitios.
Tengo el mismo problema en android 3.2. Una solución que funciona para mí (bastante feo) es poner un sueño y llamar a otro loadUrl, tratar con más tiempo si 300ms no es suficiente:
myWebView.loadUrl("file:///android_asset/gabarit.html"); try { Thread.sleep(300); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } myWebView.loadUrl("file:///android_asset/gabarit.html");
Tuve el mismo problema con mi proyecto Mo Da Browser. He añadido estas dos líneas:
wvOptions.setBuiltInZoomControls(true); wvOptions.setUseWideViewPort(true);
WvOptions es simplemente webview.getSettings () almacenado en una var. La segunda línea parece haber resuelto el problema. La primera línea proporciona a los usuarios el control del tamaño de la página web resultante. Puede agregar la opción "Abrir en vista general" si le ha gustado el resultado. Eso no me ayudó así que usé la opción de zoom.