位置: IT常识 - 正文

如何在uniapp中优雅地使用WebView(uniapp如何使用)

编辑:rootadmin
如何在uniapp中优雅地使用WebView 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助从webview页面传值到uniapp中官方文档已经很详细了,这里给大家上我的实战代码,首先在webview页面中引入相关依赖:<!-- uniapp各平台依赖 --><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)) { // 微信小程序 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>'); }</script><!-- uni 的 SDK --><script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>然后通过uni.postMessage向uniapp传值: document.addEventListener('UniAppJSBridgeReady', function() { uni.postMessage({ data: { action: 'message' } }); uni.getEnv(function(res) { console.log('当前环境:' + JSON.stringify(res)); }); });在uniapp中监听message:<template lang="pug"> view web-view.webview(:src="url" @message="getMessage")</template><script> export default { data() { return { url: "https://zys201811.boringkiller.cn/shianonline/webview/vod.html?data=123", } }, methods: { getMessage(event) { let data = event.detail.data console.log(data); } } }</script><style lang="stylus" scoped>$webviewHeight = 420rpx.webview width 750rpx height $webviewHeight</style>从uniapp中动态传值到webview页面按照官方文档,从uniapp传值到webview中,只能通过query:<template lang="pug"> view <!-- #ifdef APP-PLUS --> web-view.webview(:src="url") <!-- #endif --></template><script> export default { data() { return { url: "https://zys201811.boringkiller.cn/shianonline/webview/vod.html?data=123", } } }</script><style lang="stylus" scoped>$webviewHeight = 420rpx.webview width 750rpx height $webviewHeight</style>在webview中解析query:let data = getQuery('data')console.log(data); // 获取 uni-app 传来的值// 取url中的参数值function getQuery(name) { // 正则:[找寻'&' + 'url参数名字' = '值' + '&']('&'可以不存在) let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); let r = window.location.search.substr(1).match(reg); console.log(r); if(r != null) { // 对参数值进行解码 return decodeURIComponent(r[2]); } return null;}但是,我发现,通过向web-view的src中传值,只能传一次,如果参数改变了,没法动态传到webview。对于这种需要动态传递参数的需求,我们可以使用动态创建webview达到目的,而不是通过webview组件。实现如下:<template lang="pug"> view</template><script> export default { data() { return { url: "https://zys201811.boringkiller.cn/shianonline/webview/vod.html", } }, mounted() { // #ifdef APP-PLUS var w = plus.webview.create(this.url + '?data=good'); w.show(); setTimeout(() => { plus.webview.close(w); setTimeout(() => { w = plus.webview.create(this.url + '?data=123'); w.show(); }, 1000) }, 1000) // #endif } }</script>以上,通过plus.webview.create创建一个webview,然后显示。如果数据更新了,可以先关闭之前的一个webview,然后重新创建一个,再显示。也可以直接使用open刷新页面:// #ifdef APP-PLUSvar w = plus.webview.open(this.url + '?data=good');setTimeout(() => { w = plus.webview.open(this.url + '?data=123');}, 1000)// #endif相关API:// 创建窗口WebviewObject plus.webview.create( url, id, styles, extras );// 创建并打开窗口WebviewObject plus.webview.open( url, id, styles, aniShow, duration, showedCB );// 显示窗口void plus.webview.show( id_wvobj, aniShow, duration, showedCB, extras );// 隐藏窗口void plus.webview.hide( id_wvobj, aniHide, duration, extras );// 关闭窗口void plus.webview.close( id_wvobj, aniClose, duration, extras );调用webview中的方法动态传值还有一种解决方案,就是通过evalJs方法直接调用webview中方法。具体实现如下:在模板中,通过ref暴露web-view元素:<template lang="pug"> web-view(:src="url" ref="wb")</template>在mounted生命周期的时候获取此元素:// #ifdef APP-PLUSthis.wb = this.$refs.wb// #endif在需要调用webview中方法的时候使用evalJs:// #ifdef APP-PLUSthis.wb.evalJs(`showAlert(${this.num})`)// #endif在webview页面定义对应的方法即可:function showAlert(num) { alert(num)}从uniapp动态传值,可以使用这种方式。注意:在nvue中,只有通过ref暴露webview节点才能拿到webview本身注意evalJs的拼写方式,官方文档是evalJS,但通过ref获取时,S应该为小写如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
本文链接地址:https://www.jiuchutong.com/zhishi/287282.html 转载请保留说明!

上一篇:vue 在for循环中设置ref并获取$refs(vue for循环遍历对象取值)

下一篇:最贵的域名是什么(最贵的域名是什么名字)

  • 清理c盘垃圾(清理c盘)(电脑如何清理c盘垃圾)

    清理c盘垃圾(清理c盘)(电脑如何清理c盘垃圾)

  • vivoy31s和y52s手机壳通用吗(vivoy31s和y52s手机膜一样吗)

    vivoy31s和y52s手机壳通用吗(vivoy31s和y52s手机膜一样吗)

  • 荣耀畅玩20怎么设置下边三键(荣耀畅玩20怎么拆机)

    荣耀畅玩20怎么设置下边三键(荣耀畅玩20怎么拆机)

  • 华硕电脑内存大小怎么查看(华硕内存占用率高怎么办)

    华硕电脑内存大小怎么查看(华硕内存占用率高怎么办)

  • oppo全局搜索卸载(oppo全局搜索卸载有影响吗)

    oppo全局搜索卸载(oppo全局搜索卸载有影响吗)

  • oppoa 5手机怎么投屏(oppoa5手机怎么设置返回键)

    oppoa 5手机怎么投屏(oppoa5手机怎么设置返回键)

  • iwatch 无法检查更新(苹果手表无法检查)

    iwatch 无法检查更新(苹果手表无法检查)

  • 为什么抖音充值总是失败呢(为什么抖音充值显示服务异常)

    为什么抖音充值总是失败呢(为什么抖音充值显示服务异常)

  • 美图秀秀视频可以录多久(美图秀秀视频可以放多少张照片)

    美图秀秀视频可以录多久(美图秀秀视频可以放多少张照片)

  • 腾讯会议导入文件失败是什么原因(腾讯会议导入文档找不到文件)

    腾讯会议导入文件失败是什么原因(腾讯会议导入文档找不到文件)

  • 微信语音自动发送怎么回事(微信语音自动发送怎么回事苹果)

    微信语音自动发送怎么回事(微信语音自动发送怎么回事苹果)

  • 拨打电话呼叫失败是什么意思(拨打电话呼叫失败是拉黑吗)

    拨打电话呼叫失败是什么意思(拨打电话呼叫失败是拉黑吗)

  • 美图秀秀照片怎么保存在手机相册(美图秀秀照片怎么去水印手机上操作)

    美图秀秀照片怎么保存在手机相册(美图秀秀照片怎么去水印手机上操作)

  • 苹果提示运营商设置更新是什么意思(苹果提示运营商更新是什么意思)

    苹果提示运营商设置更新是什么意思(苹果提示运营商更新是什么意思)

  • 安卓系统内存不足怎么办(安卓系统内存不够怎么办)

    安卓系统内存不足怎么办(安卓系统内存不够怎么办)

  • 不小心退群了如何恢复(不小心退群了如何进群)

    不小心退群了如何恢复(不小心退群了如何进群)

  • ios13省电方法(苹果13设置省电)

    ios13省电方法(苹果13设置省电)

  • 索尼8500g和9000f区别(索尼8500g和9000h区别)

    索尼8500g和9000f区别(索尼8500g和9000h区别)

  • 华为拍照时间水印怎么设置(华为拍照时间水印怎么设置p30)

    华为拍照时间水印怎么设置(华为拍照时间水印怎么设置p30)

  • 大华摄像头复位键在哪(大华摄像头复位键的作用)

    大华摄像头复位键在哪(大华摄像头复位键的作用)

  • 怎么把iphone的数据导入新手机(怎么把iPhone的数据导入另外一个手机)

    怎么把iphone的数据导入新手机(怎么把iPhone的数据导入另外一个手机)

  • airpods2充电指示灯(airpods2充电指示灯黄灯亮几秒就灭了)

    airpods2充电指示灯(airpods2充电指示灯黄灯亮几秒就灭了)

  • 拼多多悬浮窗怎么关(拼多多悬浮窗怎样关闭)

    拼多多悬浮窗怎么关(拼多多悬浮窗怎样关闭)

  • bixby键自定义(更改bixby功能键)

    bixby键自定义(更改bixby功能键)

  • 为什么打开Win10应用商店会提示错误代码0x80070422?(为什么打开Win10虚拟器后一直在界面)

    为什么打开Win10应用商店会提示错误代码0x80070422?(为什么打开Win10虚拟器后一直在界面)

  • 国产统一操作系统UOS真的能代替window系统吗? UOS上手体验(国产操作系统两项全球第一)

    国产统一操作系统UOS真的能代替window系统吗? UOS上手体验(国产操作系统两项全球第一)

  • matcli.exe是什么进程 有什么用 matcli进程查询(mrmactl.exe)

    matcli.exe是什么进程 有什么用 matcli进程查询(mrmactl.exe)

  • kodakccs.exe是什么进程 有何作用 kodakccs进程查询(koc文件用什么软件打开)

    kodakccs.exe是什么进程 有何作用 kodakccs进程查询(koc文件用什么软件打开)

  • MNIST数据集手写数字识别(CNN)(semeion手写数据集)

    MNIST数据集手写数字识别(CNN)(semeion手写数据集)

  • 交强险必须交车船使用税吗?交多少钱?
  • 不征税收入确认递延收益如何填报
  • 法人股东分红要交企业所得税吗
  • 用友T3怎么结转上年数据
  • 上年度职工月平均工资是税前还是税后
  • 充电桩收入属于什么类别
  • 无发票情况说明怎么写学生
  • 进项税加计扣除账务处理
  • 城建税和教育附加税
  • 公司房租发票是专票还是普票
  • 公司收到虚开发票谁承担
  • 支付证明单打印版
  • 社会组织捐款
  • 退股支付的现金流量表怎么填
  • 破产清算重整和解
  • 库存股是实收资本吗
  • 其他综合收益的含义
  • 固定资产更改折旧年限怎么账务处理
  • 苹果手机zm
  • 联想thinkpad安装win7方法
  • 上个月留抵进项税额分录
  • 房屋出租预收租金房产税纳税义务发生时间
  • win7的文件系统
  • 自建房买卖需要缴哪些费用
  • 废品损失属于产品生产成本吗
  • 什么是包装物押运
  • 稳岗补贴支付范围
  • ccf noi指导教师认证考核
  • php安装oci8
  • apr命令怎么用
  • 《visual c++游戏编程基础》
  • 加油票没有纳税怎么办
  • 资产负债表中应交税费为负数是什么意思
  • 收到增值税收入423300,款项已存入国库
  • 我想问一下移动
  • 纳税申报的流程如何?面试怎么说
  • 加工企业的税怎么算
  • sql脚本语言怎么写
  • sql server2005备份
  • 计提持有至到期债券投资的利息
  • mysql "too many connections" 错误 之 mysql解决方法
  • 增值税加计扣除最新政策2023
  • 行政单位可以对外进行投资吗?
  • 企业给员工的福利体检报告
  • 给员工打了备用金后归还怎么做账
  • 主营业务利润的会计分录
  • 承兑汇票的贴现利息
  • 企业里面不征税的有哪些
  • 固定资产一次性扣除政策
  • 单位租用员工个人的车可以不收租吗
  • 非正常损失的进项税额转出会计分录
  • sql hash
  • mysql主键冲突但数据不存在
  • Windows Server 2008下利用Diskpart管理磁盘
  • fedora29
  • 深度操作系统中的生活服务类软件有
  • 挖掘出潜能
  • windows10 命令行
  • 解决登陆xp系统问题
  • Linux系统配置IP地址
  • cocos2d原理
  • Javascript之String对象详解
  • 第一次接触怎么形容
  • js的getattribute
  • jquery从入门到精通
  • linux用c语言实现命令功能
  • ie6怎么设置兼容性
  • bs cs架构
  • javascript ?
  • shell脚本中判断grep的结果
  • 浏览器检测js代码
  • js生成excel文件
  • De facto standard 世界上不可思议的事实标准
  • 探寻Javascript执行效率问题
  • python操作db2数据库
  • jquery showdialog
  • python图片验证码输入错误不能点登陆
  • 厂房每年要交什么费用
  • 计算消费税为什么要除1-比例税率
  • 电子税务局申领的发票怎么读入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设