Car*_*don 26 javascript android webview
我想知道如何确定何时完成 WebView 加载.
让我完全定义.
这个问题的答案很糟糕:
WebViewClient.onPageFinished() - 如果有重定向加载页面,则会多次触发.它也会在页面显示之前触发.
PictureListener.onNewPicture() - 每次屏幕更改时都会触发,每次重定向都会触发AFAICT.我怎么知道哪个射击是最后一个?
WebChromeClient.onProgressChanged() - 与onPageFinished相同的问题.(在David建议以下解决方案后添加)
Thread.sleep(5000) - 应该很明显,为什么这是不可接受的.
当然,上述工作的巧妙组合将是完美的.
为什么我想知道你问这个?因为我想注入一些JavaScript 一次一次Webview是完全完成加载.
感谢David Caunt建议您查看响应标头.
我发现以下内容非常好用:
不要让webview执行HTTP请求,而是自己执行,以便检查重定向的HTTP状态代码.按照重定向链.当您收到不是重定向的请求时,设置一个标志并通过数据将数据发送到webview webview.loadDataWithBaseURL.签入该标志, WebViewClient.onPageFinished()以便它知道所有重定向都已完成.此时可以注入javascript.当然页面本身可能正在进行一些javascript操作,很难知道,因此在javascript中添加延迟(比如500ms)可以让DOM解决.setTimeout(function(){/* your code */}, 500).
| 归档时间: |
|
| 查看次数: |
10623 次 |
| 最近记录: |