【问题标题】:Android WebView window.onload event issueAndroid WebView window.onload 事件问题
【发布时间】:2013-11-15 12:24:35
【问题描述】:

我正在开发一个 Android 应用程序,我正在使用以下语法将本地文件内容加载到 webview 中。

url = "file://" + mLocalFilePath + java.io.File.separator + CURRENT_FILE;

webView.loadUrl(url);

问题是 webview 加载文件内容并从网页中存在的 url 加载各种图像(网页有很多图像)。

我面临的挑战是我想在 webview 完成渲染整个 html 页面时收到通知。我想在网页 100% 加载时收到通知。

我参考了各种论坛,也尝试过使用

window.onload函数

还有

public void onPageFinished(WebView view, String url)

但是我没有得到期望的输出,我在 html 页面完全加载之前得到回调。我正在寻找方法,以便只有当网页完成呈现网页中存在的所有图像时我才会收到通知。(即网页是100% 加载。)

我不是在寻找完整的答案,即使是提示也将不胜感激。

谢谢

【问题讨论】:

  • onPageFinished 对我来说效果很好,你能发布整个代码吗
  • @MT8 无法发布代码,因为它非常庞大。但我已经指定了我正在做什么的抽象想法。在 webview 中加载所有资产后你会收到通知吗?
  • @vipul shah setWebChromeClient() 到 webview 工作正常。
  • Biraj Zalavadia 发布的代码是你所说的那样吗?
  • @MT8 我尝试了这段代码,但在整个页面加载之前我仍然收到回调。

标签: android webview onload-event


【解决方案1】:

试试这个方法

webView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);

                if(newProgress==100){
                    // page loading completes
                }
            }
        });

【讨论】:

    【解决方案2】:

    我使用了已弃用的PictureListener,它在页面上的所有图像都加载完毕时启动。它已被弃用,您需要在 html 中至少有一个图像,但如果您可以管理它(您可以放置​​透明的 1px*1px 图像),这是一个很好的解决方案。

        wv.setPictureListener(new PictureListener() {
    
            @Override
            public void onNewPicture(WebView view, Picture picture) {
                // some code here
                } 
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2019-05-16
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多