// 打开外部链接
export const handleOpenLinks = (url) => {
// #ifdef H5
window.open(url);
// #endif
// #ifdef APP-PLUS || APP-PLUS-NVUE || APP-NVUE
let wv = null; //计划创建的webview
if (!wv) {
wv = plus.webview.create('', 'custom-webview', {
plusrequire: 'none', //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止
'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突
top: uni.getSystemInfoSync().statusBarHeight, //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值
bottom: '0',
popGesture: 'none', // 窗口的侧滑返回功能
subNViews: [
{
id: 'web-go-back',
styles: { top: '10px', left: '10px', width: '30px', height: '30px' },
tags: [
{
tag: 'img',
src: 'https://img.sanytruck.com/b72ed727efe14c4267e6a196bc92dde7',
position: { width: '30px', height: '30px' }
}
]
}
]
});
plus.nativeObj.View.getViewById('web-go-back').addEventListener('touchstart', (e) => wv.close(), false);
}
wv.loadURL(url);
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
let curRoute = routes[Math.max(routes.length - 1, 0)]; //获取当前页面路由
const currentWebview = curRoute.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
currentWebview.append(wv); //一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭
// #endif
};
- 发布:2022-10-13 11:27
- 更新:2022-10-13 11:27
- 阅读:252
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10
HBuilderX类型: 正式
HBuilderX版本号: 3.6.4
手机系统: Android
手机系统版本号: Android 11
手机厂商: 一加
手机机型: 一加9pro
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
操作步骤:
一、<uni-link href="https://www.baidu.com" text="百度"></uni-link>
二、<text @tap="handleOpenLinks('https://www.baidu.com')">百度</text>
一、<uni-link href="https://www.baidu.com" text="百度"></uni-link>
二、<text @tap="handleOpenLinks('https://www.baidu.com')">百度</text>
预期结果:
一、页面可以正常显示,并且点击能在APP端应用内打开页面
二、点击能在APP端应用内打开页面
一、页面可以正常显示,并且点击能在APP端应用内打开页面
二、点击能在APP端应用内打开页面
实际结果:
点击报错:[Vue warn]: Unhandled error during execution of native event handler
at <IndexpageId=2pagePath="pages/login/index"__pageQuery={} ...>
TypeError: setTimeout is not a function
点击报错:[Vue warn]: Unhandled error during execution of native event handler
at <IndexpageId=2pagePath="pages/login/index"__pageQuery={} ...>
TypeError: setTimeout is not a function
bug描述:
目的:在APP端实现app应用内打开外部链接。
一、使用uni-link标签的href属性,运行会导致页面崩溃
二、通过5+app的方式打开,plus.webview.create,点击时会报错。
报错内容:[Vue warn]: Unhandled error during execution of native event handler
at <IndexpageId=2pagePath="pages/login/index"__pageQuery={} ...>
TypeError: setTimeout is not a function
0 个回复