Trước khi sử dụng JavaScript, trước tiên bạn phải kiểm tra Javascript được bật hay không trong ứng dụng của bạn bằng cách sử dụng "getJavaScriptEnabled()" (FALSE mặc định của nó). Và phương thức loadUrl() chỉ được sử dụng để tải trang hiện tại. Nó không làm bất cứ điều gì liên quan đến JavaScript.
VÍ DỤ:
Thiết lập WebView
// khởi tạo của webview
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
tải HTML trong WebView
webView.loadUrl("file:///android_asset/testhtml.html");
Setting WebChromeClient để WebView
webView.setWebChromeClient(new MyJavaScriptChromeClient());
Lớp MyJavaScriptChromeClient Ở đây chúng ta phải ghi đè phương thức onJsAlert() để xử lý JavaScript Alert Function.
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;
}
}
Html tập tin của tôi: testhtml.html:
<html>
<body >
<div onclick="alert('hello')"> Click Me !! </div>
</body>
</html>
Phương thức hoạt động? Khi văn bản "Nhấp vào tôi !!" trên WebView được nhấp vào, chức năng android onJsAlert (xem WebView, Chuỗi url, chuỗi tin nhắn, kết quả JsResult cuối cùng) được gọi. Tham số cảnh báo được sao chép vào tham số thông điệp của hàm onJsAlert. Và phần còn lại của việc xử lý được thực hiện ở đó. Ở đây chúng tôi đang hiển thị một AlertDialog.
plz cũng bỏ phiếu lên đến tôi answer ... :) – Talha