uni-app打包app嵌套h5跳转外部链接无法返回
时间: 2023-09-25 17:11:50 浏览: 116
这可能是因为您的app嵌套的H5页面使用了浏览器中的window.history API进行页面跳转,而在uni-app中,uni.navigateTo和uni.redirectTo只能操作uni-app内部的页面栈,无法操作浏览器中的页面栈,因此无法返回到uni-app中的页面。
为了解决这个问题,您可以考虑使用uni.navigateTo和uni.redirectTo打开新的uni-app页面,而不是直接跳转到外部链接。另外,您也可以在外部链接中添加返回按钮,让用户通过点击按钮返回到uni-app页面。
相关问题
uni-app打包app 嵌套h5跳转外部链接怎么返回
在uni-app中,如果要在嵌套的H5页面中跳转到外部链接,并且需要返回到上一个页面,可以使用uni-app提供的uni.navigateBack()方法。
在H5页面中跳转到外部链接时,可以使用window.location.href来实现:
```
window.location.href = 'https://www.example.com';
```
当需要返回时,可以在uni-app中使用uni.navigateBack()方法:
```
uni.navigateBack({
delta: 1 // 返回上一个页面
});
```
其中,delta表示返回的页面数,如果是返回上一个页面,则设置为1即可。如果需要返回更多层,则可以设置为2、3等。
uni-app打包app嵌套h5跳转外部链接启用物理返回键
在uni-app中,可以通过uni.navigateBack() 方法来实现物理返回键的功能,该方法可以使应用退回到上一个页面或关闭当前页面。
如果需要在嵌套H5页面中使用物理返回键,则需要在H5页面中监听浏览器的返回事件,并在事件中调用uni.navigateBack()方法。
具体实现步骤如下:
1. 在H5页面中添加返回事件监听器:
```
window.addEventListener('popstate', function() {
uni.navigateBack();
});
```
2. 在uni-app中,通过uni.createWebView()方法打开H5页面,并传递一个自定义参数isWebView=true,用于标识当前页面是在webview中打开的。
```
uni.createWebView({
url: 'http://example.com',
extras: {
isWebView: true
}
})
```
3. 在uni-app的首页(即嵌套H5页面的父页面)中监听物理返回键事件,并判断当前页面是否是在webview中打开的,如果是则调用webview的goBack()方法,否则调用uni.navigateBack()方法。
```
onBackPress() {
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
if (currentPage.$page.meta.isWebView) {
const webview = plus.webview.getWebviewById(currentPage.id);
if (webview.canBack()) {
webview.goBack();
}
} else {
uni.navigateBack();
}
}
```
通过以上步骤,即可实现在uni-app打包的app中嵌套H5页面并启用物理返回键的功能。
阅读全文