Tôi đang cố gắng thực hiện một tác vụ trên Android WebView sau khi trang web của tôi hoàn tất tải trong đó. Tôi thiết lập WebView của tôi để có một WebViewClient để sử dụng sự kiện gọi lại onPageFinished. Tuy nhiên, sau khi một số thử nghiệm, nó dường như không chờ đợi cho đến khi tất cả các JS trên trang được thực hiện tải trước khi mã onPageFinished của tôi cháy.Điều gì được coi làPageFinished trong Android WebViewClient?
Các tài liệu của Google nói điều này:
public void onPageFinished (WebView view, String url)
gia tăng ở mức API 1 Thông báo cho các ứng dụng máy chủ rằng một trang đã tải xong. Phương thức này chỉ được gọi cho khung chính. Khi onPageFinished() được gọi, hình ảnh hiển thị có thể chưa được cập nhật. Để nhận được thông báo cho Ảnh mới, hãy sử dụng onNewPicture (WebView, Ảnh).
thông số
xem Các WebView được khởi xướng gọi lại.
url Url của trang.
1) OnPageFinished chỉ chờ DOM tải?
2) Có cách nào để phát hiện khi bất kỳ JS nào trên trang kết thúc? Nếu vậy, tôi nên sử dụng cái gì?
Tôi không thấy bất kỳ điều gì trong WebViewClient sẽ có mục đích đó. Tôi không muốn thêm chậm trễ vì người dùng của tôi có thể sử dụng EDGE hoặc trên LTE.
Tôi đang cố gắng xác định thời điểm Javascript được liên kết với trang đang chạy xong.Từ công việc của tôi, tôi thấy rằng onPageFinished được gọi khi các phần HTML của trang được tải xong - không nhất thiết khi Javascript hoàn tất. Phương pháp bạn đang trỏ vào không cho tôi câu trả lời mà tôi cần, đó là, "Có cách nào để phát hiện khi có [Javascript] trên trang kết thúc không? Nếu vậy, tôi nên sử dụng cái gì?" – Steven
Khi bạn nói "JS trên trang kết thúc" ý định của bạn ở đây là gì? Ý của bạn là "khi nó đã thực hiện xong". Nếu đó là ý của bạn thì bạn có thể muốn.) Tạo một Giao diện JavaScript giữa mã HTML (web) và mã Java của bạn (android) bằng cách sử dụng phương thức addJavascriptInterface() (một thành viên của lớp WebViewClient) hoặc b.) Thêm một số nhật ký tùy chỉnh hoặc cảnh báo vào hàm JS và phát hiện nó bằng cách sử dụng các phương thức onConsoleMessage()/onJsAlert() thuộc về lớp WebChromeClient. – Sriram