我的网页加载完毕后,我试图在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完成时”是什么意思。也许您可以阐明您的意思?

10-06 09:50