我的网页加载完毕后,我试图在Android WebView上执行操作。我将WebView设置为具有一个WebViewClient来使用onPageFinished事件回调。但是,经过一些测试,似乎并没有等到页面上的所有JS完成加载后,我的onPageFinished代码才会触发。
Google文档说:
public void onPageFinished (WebView view, String url)
在API级别1中添加
通知主机应用程序页面已完成加载。仅对主机调用此方法。调用onPageFinished()时,渲染图片可能尚未更新。要获取有关新图片的通知,请使用onNewPicture(WebView,Picture)。
1)onPageFinished是否仅等待DOM加载?
2)有没有一种方法可以检测页面上的任何JS何时完成?如果是这样,我应该怎么用?
我没有在WebViewClient中看到任何用于此目的的内容。我不想增加延迟,因为我的用户可以使用EDGE或LTE。
最佳答案
您需要从WebChromeClient实现回调。 onPageFinished()是WebViewClient提供的API。还有一个名为WebChromeClient的接口(interface),它提供您正在寻找的进度信息:
http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView,int)
打开上面的链接,然后查找onProgressChanged(WebView view,int newProgress)-“newProgress”变量为您提供已完成的页面加载的百分比。当它达到100时,您将获得一个有效页面。 onPageFinished()无法可靠地用于此操作(由于服务器端重定向等)
我不知道“页面上的JS完成时”是什么意思。也许您可以阐明您的意思?