【发布时间】:2011-08-01 01:37:17
【问题描述】:
我想知道如何确定 WebView 何时完全完成加载。
让我完全定义。
- 所有重定向都发生了
- 页面可见,尚未加载任何内容
这个问题的答案不好:
WebViewClient.onPageFinished() - 如果有重定向加载页面,则会触发多次。它还会在页面显示之前触发。
PictureListener.onNewPicture() - 每次屏幕更改和 AFAICT 每次重定向时都会触发。我怎么知道最后一枪是哪一枪?
WebChromeClient.onProgressChanged() - 与 onPageFinished 相同的问题。 (在大卫建议下面这个解决方案后添加)
Thread.sleep(5000) - 应该很明显,为什么这是不可接受的。
当然,上述方法的巧妙组合将是完美的。
你问我为什么想知道这个? 因为我想在网络视图完全加载完成后一次注入一些javascript。
【问题讨论】:
-
添加到您的
WebViewClient.onPageFinished()“错误答案”:根据this,如果页面中有多个 iframe,它会触发多次也。 -
@Carlos Man 的位置与您完全相同。唯一让我的情况变得更糟的是 PictureListener 已被弃用。你能想出一个解决方案吗?我必须计算需要将内容宽度除以屏幕宽度的 web 视图中的总页数。但在页面完全呈现在屏幕上之前,我无法做到这一点。有什么解决办法吗?
-
@ArunavhKrishnan 上次我看这个是 3 年前。最后,我认为我做了类似于接受的答案的事情。祝你好运!
-
您可以使用立即调用函数表达式 (IIFE) 或添加一个事件侦听器来侦听 DOM 就绪事件,而不是在页面加载完成后注入 JavaScript。有
DOMContentLoaded以及window.onload和document.ready。
标签: javascript android webview