大家好,我是大澈!一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员👨🏻💻,关注我,科技未来或许我能帮到你!
今天做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。
好了,今天要分享的内容就是这么多,最后感谢朋友们给个点赞、分享、推荐,拜拜~