La función Javascript no se llama en la vista web de android
Estoy haciendo una aplicación que se ejecuta en la vista web android. Estoy enfrentando un problema extraño, mi función JavaScript no recibe llamadas en <a></a>
método onClick.
Aquí está mi código html y JavaScript:
- JQuery getScript no funciona en Android WebView cuando se utiliza Activos locales / HTML / Recursos
- Cómo manejar la intención: // en una URL webView?
- Vista Web con No hay configuraciones EGL adecuadas encontradas error
- Captura de pantalla de WebView en Android
- Imagen de la vista web de Android: renderizar al centro en lugar de a la esquina superior izquierda
<html> <script type="text/javascript" src="http://blue.xxxxxxxx.com/xxxxx/site/js/jquery.js"></script> <script> function openFileDialog() { //$("#file").click(); alert("Test"); } </script> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> <a href="javascript:;" onclick="openFileDialog();">Shujaat</a> </body> </html>
Y aquí está mi código de java webviews.
package com.example.findozerapp; import my.functions.MyFunctions; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebSettings.ZoomDensity; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { Context context = MainActivity.this; Activity activity = MainActivity.this; WebView webView; MyFunctions myFunctions; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myFunctions = new MyFunctions(activity); webView = (WebView) findViewById(R.id.webView1); configureWebview(); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); webView.loadUrl("http://www.xxxxxxx.com/qadir/"); } private void configureWebview() { webView.setPadding(0, 0, 0, 0); webView.setInitialScale(myFunctions.setWebViewScale()); webView.getSettings().setDefaultZoom(ZoomDensity.FAR); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setCacheMode(MODE_APPEND); webView.setWebViewClient(new MyWebViewClient()); } private class MyWebViewClient extends WebViewClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO Auto-generated method stub super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } } }
Tengo permiso javascript en mi webview.
Pero su no llamar a mi función javascript openFileDialog()
.
Y una cosa más. Cada vez que carga mi esta página web en el navegador predeterminado de android está funcionando perfectamente. Donde he hecho mal. Por favor, compruebe la configuración de mi webview.
- Android WebView no carga jQuery
- WebView - WebPage no disponible
- Android WebView onReceivedError ()
- Reproducción tardía de la webview de Android
- ¿Cómo configurar WebView como no fullscreen?
- Android WebView añadiendo extraño espacio vacío en la parte inferior
- ¿Cómo habilitar los controles de zoom y el zoom de pellizco en un WebView?
- Añadir encabezados personalizados desde android webview
Si ha establecido su targetSdkVersion en 17 o superior, debe agregar la anotación @JavascriptInterface a cualquier método que desee que esté disponible en su código de página web (el método también debe ser público). Si no proporciona la anotación, el método no será accesible por su página web cuando se ejecute en Android 4.2 o superior.
Cambia esto:
<a href="javascript:;" onclick="openFileDialog();">Shujaat</a>
A:
<a href="javascript:void(0)" onclick="openFileDialog()">Shujaat</a>
Prueba esto:
En tu código java (antes de webView.setWebViewClient(new MyWebViewClient());
webView.setWebChromeClient(new WebChromeClient());
En tu código HTML:
<a href="javascript:openFileDialog()">Shujaat</a>
Intente establecer el cliente de Chrome en la vista web y sobreescriba el método onJsAlert en el cliente de Chrome, como se muestra a continuación.
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });
- Intercambio entre el fragmento de Google Maps v2 y el listfragment
- Utilice ActionBarSherlock con el mapa de Google API V2