uniapp使用web-view嵌入的h5项目,如何让app控制h5返回上一页?
App有自己的头部导航栏,在左侧有返回上一页的按钮,但在手机上点击返回按钮,h5并没有反应,不能反回上一页,如何能够通过导航返回按钮控制h5返回上一页?
uniapp使用web-view嵌入的h5项目,如何让app控制h5返回上一页?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 中本王 2023-04-26 13:43关注
1、可以通过调用uniapp的uni.navigateBack()方法来控制H5页面返回上一页。具体实现步骤如下:
在H5页面中,监听onload事件,将当前页面的url传递给app:
js window.onload = function() { var currentUrl = window.location.href; uni.postMessage({ type: 'currentUrl', data: currentUrl }); }
2、在uniapp中,监听uni.onNativeMessage事件,接收H5页面发来的消息,获取当前页面的url,并保存在一个数组中。
var urls = []; // 保存H5页面的url uni.onNativeMessage(function(message) { if (message.type === 'currentUrl') { urls.push(message.data); } });
3、在uniapp中,通过uni.navigateBack()方法控制返回上一页。当用户点击返回按钮时,先从数组中获取上一个页面的url,然后通过uni.navigateBack()方法返回上一页。
function goBack() { urls.pop(); // 删除当前页面的url var prevUrl = urls[urls.length - 1]; // 获取上一个页面的url if (prevUrl) { uni.navigateBack({ delta: 1, success: function() { // 向上一页发送消息,通知页面重新加载数据 uni.postMessage({ type: 'reload', data: prevUrl }); } }); } else { // 如果没有上一个页面了,直接关闭当前页面 uni.navigateBack({ delta: 1 }); } }
4、在H5页面中,监听uni.onNativeMessage事件,接收来自uniapp的消息,如果收到了reload类型的消息,就重新加载页面数据。
uni.onNativeMessage(function(message) { if (message.type === 'reload' && message.data === window.location.href) { window.location.reload(); } });
这样就可以通过uniapp的头部导航栏返回按钮控制H5页面返回上一页了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 python怎么在已有视频文件后添加新帧
- ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
- ¥15 fluent里模拟降膜反应的UDF编写
- ¥15 MYSQL 多表拼接link
- ¥15 关于某款2.13寸墨水屏的问题
- ¥15 obsidian的中文层级自动编号
- ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
- ¥15 神经网络模型一直不能上GPU
- ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
- ¥20 wpf datagrid单元闪烁效果失灵