安卓webview dom加载完触发的事件

webView.setWebViewClient(new WebViewClient() {
onPageFinished(WebView view, String url) {view.evaluateJavascript()}
}
这个可以在页面加载后执行一些js注入,但是,需要等待图片的加载,有没有哪个方法可以在dom加载完就执行的方法,而不是要等待全部页面加载完。

js对应的事件是DOMReady,可以用onReceivedTitle事件注入js的DOMContentLoaded事件。具体参考下面的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/205607
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:安卓webview注入js修改网页文本或添加其他元素
  • 您还可以看一下 秦子恒老师的小程序web-view使用方法,微信web-view实现微信支付课程中的 使用webview轻松把你的网站移植到小程序里小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    建议:

    根据参考资料中提到的方法,可以在WebChromeClient和WebViewClient的以下方法中加载Js:

    onLoadResource doUpdateVisitedHistory onPageStarted onPageFinished onReceivedTitle onProgressChanged

    具体实现方法为:编写一个自定义的WebViewClient类,重写其中的onPageFinished方法,在方法中调用WebView的evaluateJavascript方法,执行所需要的Js代码。该方法会在页面加载完成后立即执行Js代码,而不需要等待所有内容(包括图片)加载完成。以下为一个可能的实现:

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            //在页面加载完成后执行需要的Js代码
            view.evaluateJavascript("your javascript code here", new ValueCallback<String>() {
                @Override
                public void onReceiveValue(String value) {
                    //Js返回值,可以忽略
                }
            });
        }
    });
    

    注意:以上代码需要在主线程中执行。

    另外,建议在Js代码中添加一些判断,以确保只在dom加载完成后才执行所需的逻辑,例如:

    if (document.readyState === "complete") {
        //执行所需的逻辑
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632