获取当前webview的URL(Uniapp必会)

217 阅读1分钟

大家好,我是大澈!一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员👨🏻‍💻,关注我,科技未来或许我能帮到你!

今天做uniapp项目时,遇到一个需求,需要获取当前webview的URL,然后根据页面URL判断,分别去做不同的处理。

不知道朋友们有没有遇到过该需求~

一、重点描述

技术栈使用的是uniapp,只针对App端。

这个URL可能是一个第三方链接,但注意并不是当前webview的路径。

直接通过 web-view 组件的 src 属性 或 message事件监听 URL 变化,是获取不到当前加载的URL的,获取到的只是当前webview的路径。

二、细节剖析

完整代码如图所示:

图片

1、getCurrentPages();

作用:获取页面栈(所有已打开的页面实例数组)。

说明:getCurrentPages() 是 uni-app 的官方 API,返回当前页面栈的实例数组,最后一个元素代表当前显示的页面。

2、page.$getAppWebview();

作用:获取当前页面对应的原生 WebView 对象。

说明:

$getAppWebview() 不是官方公开 API,它是 HBuilderX 内部方法,仅在 App 平台有效。

其他平台(如 H5、小程序)不支持该方法,调用会报错。

3、currentWebview.children()[0].getURL();

作用:从原生 WebView 对象中提取 URL。

说明:

currentWebview.children() 获取 WebView 的子组件列表。

.children()[0] 假定第一个子组件是目标 WebView(依赖层级结构,可能不稳定)。

.getURL() 调用原生 WebView 的方法获取当前加载的 URL。

好了,今天要分享的内容就是这么多,最后感谢朋友们给个点赞、分享、推荐,拜拜~