爱收集资源网

APP中用到H5页面的越来越多,而如何正确获取WebView的网页title

网络整理 2022-04-10 21:01

前言

现在APP中使用的H5页面越来越多,如何正确获取WebView页面的标题是必须要考虑的问题。

最近在做一个项目的时候,老板让我修改之前做的webview打开网页的功能,说是动态获取网页的标题,然后显示在我们自己的应用程序的标题栏,然后我跌跌撞撞。运行查看webview的源码,看看有没有获取标题的方法。

网上可以查到的大部分方法都是在WebChromeClient的onReceivedTitle(WebView视图,String title)中获取title。但是,该方法在网页回滚时无法得到正确的上层标题。在线处理方式是维护一个List来缓存标题。执行 webView.goBack() 后网页上标题栏没有了,删除 List 的最后一个条目。然后将新的最后一个条目设置为标题栏。

这种方法当然是可行的,但是缓存和移除的时机并不好由自己决定什么时候缓存。onReceivedTitle 方法不仅是在打开页面时调用一次,而是多次调用,之前获取的标题都是空的。

这里使用原生的WebBackForwardList来获取网页上标题栏没有了,详情见代码。

 webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { getWebTitle(); } }); private void getWebTitle(){ WebBackForwardList forwardList = webView.copyBackForwardList(); WebHistoryItem item = forwardList.getCurrentItem(); if (item != null) { setActionBarTitle(item.getTitle()); } } private void onWebViewGoBack(){ webView.goBack(); getWebTitle(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (webView.canGoBack()) { onWebViewGoBack(); return false; } return super.onKeyDown(keyCode, event); }

总结

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考和学习价值。有问题可以留言交流,谢谢支持。

推荐内容:免费高清PNG素材下载

webview 网页标题