Webview获取H5页面的title,并解决回退时title不变的问题

Webview内嵌H5页面,获取H5页面的title,不及时

表现:1,ios只抓取第一个页面的title;2,安卓页面返回或实时修改不生效问题

问题分析:

  • 原因是在IOS webview中网页标题只加载一次,动态改变是无效的;
  • 安卓只在页面完成生命周期抓取title;在 new WebChromeClient() 里 重写 onReceivedTitle 方法 拿到 title
  • 当 goback 返回之后, title 并没有自动的变回去,还是上一个页面的 title,这时我们可以采用第二种方法来获取
  • 在 new WebViewClient() 里 重写 onPageFinished方法 拿到 title

解决方法:安卓需要在资源加载时获取title,有下面的方法完美解决。

// 解决ios title不更新问题
export function changeTitle (title) {
  document.title = title
  let i = document.createElement('iframe')
  i.style.display = 'none'
  i.src = './favicon.ico' // 加载当前页面下一个体积小的资源,比如favicon.ico
  i.onload = () => {
    setTimeout(() => {
      i.remove()
    }, 0)
  }
  document.body.appendChild(i)
}

  

posted @ 2019-11-28 16:50  有什么奇怪  阅读(1838)  评论(0)    收藏  举报