位置: IT常识 - 正文

如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面(uniapp 嵌套webview)

编辑:rootadmin
如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面 如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面场景Web-View在官网中提供的是APP嵌入原生的H5页面在APP中使用web-view嵌入H5页面使用web-view组件就可以实现,代码如下调用方法跳转至app 的页面的关键方法 uni.reLaunch以上代码可以解决APP嵌入原生H5页面跳转回APP的问题,但是使用uniapp开发H5就会失效,在uniapp开发H5页面使用 uni.reLaunch 只能跳转到H5项目本地的页面。解决方法如下1. 下载官网web-view的SDK2. 在H5项目的main.js 文件里导入这个文件3. 原生H5使用的跳转方法和uniapp开发的H5使用的跳转方法是不一样的场景

推荐整理分享如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面(uniapp 嵌套webview),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp嵌套页面,uniapp怎么用,uniapp引入element,uniapp 嵌套webview,uniapp嵌套页面,uniapp怎么引入elementui,uniapp嵌套页面,uniapp嵌入网页,内容如对您有帮助,希望把文章链接给更多的朋友!

有一个需求是,在app中嵌入一个H5页面,H5是一个网络页面,不在app项目里,APP可以打开H5页面,实现单点登录,并且在H5 页面中打开APP指定的页面

Web-View

在uniapp中,有一个web-view组件,这就相当于一个浏览器组件,可以用来承载网页的容器,会自动铺满整个页面 web-view的详细文档参考uniapp官网

https://uniapp.dcloud.net.cn/component/web-view.html#web-view在官网中提供的是APP嵌入原生的H5页面从官方demo的代码,原生H5页面使用的HTML在APP中使用web-view嵌入H5页面使用web-view组件就可以实现,代码如下<template><view><web-view src="https://uniapp.dcloud.io/static/web-view.html"></web-view></view></template>

src是H5的地址,可以是任何网址,与APP的地址什么的没有关系,也可以是www.baidu.com ,在这里为了方便测试,使用官方的 H5地址 官方原生h5 代码如下

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title>网络网页</title> <style type="text/css"> .btn { display: block; margin: 20px auto; padding: 5px; background-color: #007aff; border: 0; color: #ffffff; height: 40px; width: 200px; } .btn-red { background-color: #dd524d; } .btn-yellow { background-color: #f0ad4e; } .desc { padding: 10px; color: #999999; } .post-message-section { visibility: hidden; } </style> </head> <body> <p class="desc">web-view 组件加载网络 html 示例。点击下列按钮,跳转至其它页面。</p> <div class="btn-list"> <button class="btn" type="button" data-action="navigateTo">navigateTo</button> <button class="btn" type="button" data-action="redirectTo">redirectTo</button> <button class="btn" type="button" data-action="navigateBack">navigateBack</button> <button class="btn" type="button" data-action="reLaunch">reLaunch</button> <button class="btn" type="button" data-action="switchTab">switchTab</button> </div> <div class="post-message-section"> <p class="desc">网页向应用发送消息,注意:小程序端应用会在此页面后退时接收到消息。</p> <div class="btn-list"> <button class="btn btn-red" type="button" id="postMessage">postMessage</button> </div> </div> <script type="text/javascript"> var userAgent = navigator.userAgent; if (userAgent.indexOf('AlipayClient') > -1) { // 支付宝小程序的 JS-SDK 防止 404 需要动态加载,如果不需要兼容支付宝小程序,则无需引用此 JS 文件。 document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>'); } else if (/QQ/i.test(userAgent) && /miniProgram/i.test(userAgent)) { // QQ 小程序 document.write( '<script type="text/javascript" src="https://qqq.gtimg.cn/miniprogram/webview_jssdk/qqjssdk-1.0.0.js"><\/script>' ); } else if (/miniProgram/i.test(userAgent) && /micromessenger/i.test(userAgent)) { // 微信小程序 JS-SDK 如果不需要兼容微信小程序,则无需引用此 JS 文件。 document.write('<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>'); } else if (/toutiaomicroapp/i.test(userAgent)) { // 头条小程序 JS-SDK 如果不需要兼容头条小程序,则无需引用此 JS 文件。 document.write( '<script type="text/javascript" src="https://s3.pstatp.com/toutiao/tmajssdk/jssdk-1.0.1.js"><\/script>'); } else if (/swan/i.test(userAgent)) { // 百度小程序 JS-SDK 如果不需要兼容百度小程序,则无需引用此 JS 文件。 document.write( '<script type="text/javascript" src="https://b.bdstatic.com/searchbox/icms/searchbox/js/swan-2.0.18.js"><\/script>' ); } else if (/quickapp/i.test(userAgent)) { // quickapp document.write('<script type="text/javascript" src="https://quickapp/jssdk.webview.min.js"><\/script>'); } if (!/toutiaomicroapp/i.test(userAgent)) { document.querySelector('.post-message-section').style.visibility = 'visible'; } </script> <!-- uni 的 SDK --> <!-- 需要把 uni.webview.1.5.4.js 下载到自己的服务器 --> <script type="text/javascript" src="https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js"></script> <script type="text/javascript"> // 待触发 `UniAppJSBridgeReady` 事件后,即可调用 uni 的 API。 document.addEventListener('UniAppJSBridgeReady', function() { uni.postMessage({ data: { action: 'message' } }); uni.getEnv(function(res) { console.log('当前环境:' + JSON.stringify(res)); }); document.querySelector('.btn-list').addEventListener('click', function(evt) { var target = evt.target; if (target.tagName === 'BUTTON') { var action = target.getAttribute('data-action'); switch (action) { case 'switchTab': uni.switchTab({ url: '/pages/tabBar/API/API' }); break; case 'reLaunch': uni.reLaunch({ url: '/pages/tabBar/component/component' }); break; case 'navigateBack': uni.navigateBack({ delta: 1 }); break; default: uni[action]({ url: '/pages/component/button/button' }); break; } } }); document.getElementById('postMessage').addEventListener('click', function() { uni.postMessage({ data: { action: 'message' } }); }); }); </script> </body></html>如何Uniapp中嵌入H5,并且在H5中跳转到APP的指定页面(uniapp 嵌套webview)

在这里我们提取出关键的代码

<!-- 需要把 uni.webview.1.5.4.js 下载到自己的服务器 --> 导入web-view 的SDK <script type="text/javascript" src="https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js"></script>调用方法跳转至app 的页面的关键方法 uni.reLaunchuni.reLaunch({ url: '/pages/tabBar/component/component' });

这个方法是跳转到APP的指定页面,url就是APP页面的路径,在APP项目中目录结构如下

对于这几个跳转方法可以自己去学习

case 'switchTab': uni.switchTab({ url: '/pages/tabBar/API/API' }); break; case 'reLaunch': uni.reLaunch({ url: '/pages/tabBar/component/component' }); break; case 'navigateBack': uni.navigateBack({ delta: 1 }); break;以上代码可以解决APP嵌入原生H5页面跳转回APP的问题,但是使用uniapp开发H5就会失效,在uniapp开发H5页面使用 uni.reLaunch 只能跳转到H5项目本地的页面。解决方法如下1. 下载官网web-view的SDK

在官网的原生H5 demo 导入了这个关键的Js文件,通过浏览器打开 https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js 复制里面的JS代码 在H5项目里创建一个js文件 web-view.js,内容即是以上js代码

2. 在H5项目的main.js 文件里导入这个文件

3. 原生H5使用的跳转方法和uniapp开发的H5使用的跳转方法是不一样的uni.webView.reLaunch({url: '/pages/tabBar/component/component'});

区别在于 uniapp开发的H5要加上 webView

本文链接地址:https://www.jiuchutong.com/zhishi/280073.html 转载请保留说明!

上一篇:Linux中遇到device is busy的处理方法(linux device drivers)

下一篇:路由器的默认网关是多少详情(路由器的默认网关在哪里看)

  • 个人所得税汇算清缴截止日期
  • 新公司个税申报怎么操作
  • 房产税的计算公式是多少
  • 个人所得税减除费用6万元什么意思
  • 自然人扣缴是什么意思
  • 个人所得税可以退几年前的?
  • 保险金扣税吗
  • 建筑企业如何预缴税款
  • 定期存款准备金是什么
  • 个人所得税如何申报
  • 银行提供服务收费标准
  • 发票抵税是指哪些内容
  • 小微企业企业所得税怎么征收2023
  • 消费税和增值税的不同之处
  • 固定资产改良被替换怎么处理
  • 支票存根没有进账怎么办
  • 跨区域个人所得税延期情况说明
  • 城镇土地使用税每年都要交吗
  • 自建商品房转为自用增值税
  • win11 老机器
  • 跨年度暂估成本入账冲回如何会计分录
  • 房屋租赁进项税
  • 车间报销办公用品费
  • 前端框架学哪个好
  • 高新技术企业收入占比不到60%,能否享受税收优惠政策
  • 共轭梯度法matlab代码
  • 合并命令如何使用
  • 普通发票收款人填管理员可以吗
  • 违约赔偿金要交税吗
  • 客户倒闭预收款怎么处理
  • 信托保障基金怎么赎回
  • 企业增值税申报流程
  • php 用户
  • 房租费税金计入哪个科目
  • 已付款收到发票
  • 原材料的对应账户有哪些
  • 盘盈盘亏的定义
  • 销售折让如何做分录
  • 土地违约金的法律规定
  • 对外服务应收取的款项
  • 小微企业的认定由哪个部门负责
  • 企业取得的跨期业务
  • 固定资产清理的累计折旧怎么算
  • 企业一般户怎么查询
  • 无形资产的费用化支出计入成本吗
  • 不属于投资性房地产项目有自用房地产作为存货的
  • 回购股票会导致所有者权益减少吗
  • 专票取消认证
  • 接到国外的电话是怎么回事
  • 公司转账给其他公司账户
  • 明细分类账如何填写
  • 新成立的公司需要年检吗
  • 固定资产建账为什么不能直接输入名字
  • sql的常用函数
  • mysql 授权命令
  • 关闭空闲的ide通知怎么写
  • debian 安装
  • ssh -i命令
  • mac虚拟机安装win10教程
  • xp系统怎么调出任务管理器
  • linux配置java环境变量无法保存并退出
  • centos硬盘扩容
  • windows 10的回收站在哪里
  • 如何在win7系统中查看电脑基本信息
  • win81激活
  • cocos2dx schedule
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_27]CocoStudio导出的LUA文件怎么使用?
  • cocos2dx怎么用啊
  • shell获取文件内容给变量
  • firefox浏览器标识ua
  • js 实现跳转页面
  • Python实现以时间换空间的缓存替换算法
  • javascript编程技术
  • jquery获取outerhtml
  • 海关跟税务关系的区别
  • 煤炭资源税税率调整
  • 怎么向税局举报
  • 如何查询哈尔滨医院药品信息
  • 税务局调查巡查政策依据
  • 作废税票会影响税率吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设