Przed użyciem JavaScript, najpierw trzeba sprawdzić czy Javascript został aktywowany lub nie w aplikacji za pomocą „getJavaScriptEnabled()” (Jego domyślna false). A metoda loadUrl() służy tylko do ładowania bieżącej strony. Nie robi nic związanego z JavaScriptem.
PRZYKŁAD:
Konfigurowanie WebView
// inicjalizacja WebView
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
Ładowanie HTML w WebView
webView.loadUrl("file:///android_asset/testhtml.html");
Ustawienie WebChromeClient do Webview
webView.setWebChromeClient(new MyJavaScriptChromeClient());
Klasy MyJavaScriptChromeClient Tutaj musimy nadpisać metodę onJsAlert(), aby obsłużyć funkcję alertu 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;
}
}
Mój plik HTML: testhtml.html:
<html>
<body >
<div onclick="alert('hello')"> Click Me !! </div>
</body>
</html>
Jak to działa? Kiedy tekst "Kliknij mnie!" na kliknięciu WebView wywoływana jest funkcja Android onJsAlert (widok WebView, URL String, komunikat String, wynik końcowy JsResult). Parametr ostrzeżenia jest kopiowany do parametru komunikatu funkcji onJsAlert. Reszta obsługi jest tam wykonywana. Tutaj wyświetlamy AlertDialog.
plz również do mojego głosu odpowiedź ... :) – Talha