Antes de utilizar JavaScript, primero tiene que comprobar que Javascript está habilitado o no en su aplicación usando "getJavaScriptEnabled()" (es FALSE por defecto). Y el método loadUrl() solo se usa para cargar la página actual solamente. No hace nada relacionado con JavaScript.
Ejemplo:
Configuración de WebView
// inicialización de vista web
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
Cargando HTML en WebView
webView.loadUrl("file:///android_asset/testhtml.html");
WebChromeClient Ajuste a web View
webView.setWebChromeClient(new MyJavaScriptChromeClient());
Clase MyJavaScriptChromeClient Aquí tenemos que anular el método JsAlert() para manejar la función de alerta de JavaScript.
private class MyJavaScriptChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
//handle Alert event, here we are showing AlertDialog
new AlertDialog.Builder(MainWebViewActivity.this)
.setTitle("JavaScript Alert !")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do your stuff
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
}
Mi archivo HTML: testhtml.html:
<html>
<body >
<div onclick="alert('hello')"> Click Me !! </div>
</body>
</html>
Cómo funciona? Cuando el texto "¡Haga clic en mí!" en el WebView se hace clic, se llama a la función de Android en JsAlert (vista de WebView, url de cadena, mensaje de cadena, resultado de JsResult final). El parámetro para alertar se copia al parámetro de mensaje de la función onJsAlert. Y el resto del manejo se hace allí. Aquí mostramos un AlertDialog.
PLZ también votan a mi respuesta ... :) – Talha