uniapp的web-wiew获取当前url

不懂前端,不会uniapp,求助个问题,a页面用web-view镶嵌一个外部页面iqiyi.com,这个web-view经过n次跳转后,我在a页面顶部有个按钮,点击这个顶部按钮获得web-view当然页面的url并用b页面的web-view打开,意思是我在iqiyi.com找到一个电影,我需要这个电影跳转到b页面播放,如果可以,求个完整代码,实在不行就不用uniapp写了,我主要运行在APP,小程序实现起来估计要自定义顶部了,有点麻烦 我顶部按钮是这个 onNavigationBarButtonTap(e) { uni.showToast({ title: e.index === 0 ? "播放" : "刷新", icon: "none" }) }, 应该怎么改呢

参考GPT和自己的思路:

你可以使用uni-app提供的web-view组件的onMessage属性,通过在外部页面的JavaScript代码向web-view发送消息,并在uni-app中监听该消息来获取当前页面的URL。具体实现方法如下:

  1. 在外部网页中,向web-view发送当前页面的URL消息:
window.parent.postMessage({
  type: 'getCurrentUrl',
  data: {
    url: location.href
  }
}, '*');
  1. 在uni-app的web-view组件中添加onMessage属性,并在该属性中监听getCurrentUrl消息并获取URL:
<web-view src="https://www.iqiyi.com/" @message="onWebViewMessage"></web-view>
export default {
  methods: {
    onWebViewMessage(event) {
      const { data } = event.detail;
      if (data.type === 'getCurrentUrl') {
        const url = data.data.url;
        uni.navigateTo({
          url: '/pages/b-page/b-page?url=' + encodeURIComponent(url)
        });
      }
    }
  }
}
  1. 在b页面的web-view中使用uni-app内置的web-view组件属性src来传递URL:
<web-view :src="decodeURIComponent($route.query.url)"></web-view>
  1. 将a页面的onNavigationBarButtonTap方法修改如下:
onNavigationBarButtonTap(e) {
  if (e.index === 0) {
    const webViewContext = uni.createWebViewContext('web-view');
    webViewContext.postMessage({
      type: 'getCurrentUrl'
    });
  } else {
    uni.showToast({
      title: "刷新",
      icon: "none"
    });
  }
}

这样就可以在a页面中点击顶部按钮获取web-view的当前URL并跳转到b页面进行播放了。