webView.setWebViewClient(new WebViewClient() {
onPageFinished(WebView view, String url) {view.evaluateJavascript()}
}
这个可以在页面加载后执行一些js注入,但是,需要等待图片的加载,有没有哪个方法可以在dom加载完就执行的方法,而不是要等待全部页面加载完。
js对应的事件是DOMReady,可以用onReceivedTitle事件注入js的DOMContentLoaded事件。具体参考下面的
建议:
根据参考资料中提到的方法,可以在WebChromeClient和WebViewClient的以下方法中加载Js:
onLoadResource doUpdateVisitedHistory onPageStarted onPageFinished onReceivedTitle onProgressChanged
具体实现方法为:编写一个自定义的WebViewClient类,重写其中的onPageFinished方法,在方法中调用WebView的evaluateJavascript方法,执行所需要的Js代码。该方法会在页面加载完成后立即执行Js代码,而不需要等待所有内容(包括图片)加载完成。以下为一个可能的实现:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//在页面加载完成后执行需要的Js代码
view.evaluateJavascript("your javascript code here", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//Js返回值,可以忽略
}
});
}
});
注意:以上代码需要在主线程中执行。
另外,建议在Js代码中添加一些判断,以确保只在dom加载完成后才执行所需的逻辑,例如:
if (document.readyState === "complete") {
//执行所需的逻辑
}