位置: 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循环遍历对象取值)

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

  • 房地产公司自用房屋销售土地增值税计算
  • 小微企业年度所得税优惠政策
  • 劳务报酬个人所得税税率表
  • 企业发生的哪些成本可以在企业所得税税前扣除
  • 无票收入也需要开票吗
  • 金税盘地区编号查询
  • 汇算清缴从业人员平均值
  • 网约车有电子发票吗
  • 企业所得税申报表A类
  • 上月营业外收入少报入了怎么办
  • 第一季度盈利第二季度亏损全年盈利
  • 土地增值税哪些可以加计扣除
  • 增值税普通电子发票
  • 建安业一般纳税人企业所得税率是多少
  • 行政事业单位2014年前已交社保费
  • 实缴资本是真的吗
  • 网络平台收费标准
  • 申请办理银行承兑流程
  • 增值税的销项税额和进项税额的区别
  • 个体户生产经营所得税率表2023
  • 利息收入是否缴纳印花税
  • 建筑行业会计成本会计工作流程
  • 建筑工地发生的典型意外情况有哪些
  • 直接计入当期利润的利得,即企业非日常
  • 苹果紧急提醒
  • ixapplet.exe - ixapplet是什么进程 有何作用
  • 支付宝花呗服务费收费标准
  • php ftp功能
  • 存货出租的会计分录
  • 超过两年的发票还可以查询吗
  • 银行存款日记账与银行对账单之间的核对属于
  • 开发间接费用会计分录
  • 为什么不能零申报
  • 西班牙的藏红花好不好
  • 电力行业增值税率
  • 生产企业可以抵扣进项税的
  • php发送邮箱
  • vuex中this.$store.commit和this.$store.dispatch的用法
  • html的标签大全
  • 公益性捐赠递延注会
  • cms访问出错
  • python中如何创建文件
  • mongodb bi
  • mustn't be allowed
  • 计提税金如何做凭证
  • 购买软件使用费计入什么科目
  • 收到成本发票如何记账
  • 房屋租赁费属于变动成本吗
  • 住宿费用专票可以抵扣吗
  • 多计提的城建税怎么冲减
  • 日后事项中所得税的处理方法
  • 长期待摊费用的最新账务处理
  • 外派国外的员工享受国内法定假期吗
  • 未开票收入怎么报税
  • 收到专票未抵扣能购买方开红字发票吗
  • 个人独资企业核定征收取消了吗
  • sql server 自增列设置语句
  • 分配服务器失败
  • mac 显示器
  • mac电脑finder在哪里
  • win8宽带错误651最简单解决方法
  • win8.1玩游戏好不好
  • jquery链式操作原理
  • node分页接口
  • 批处理 dir
  • css中文手册
  • perl里怎么对数组实现一次遍历
  • Unity3D游戏开发(第2版)pdf
  • 微信开发微信开发
  • jquery控制滚动条位置
  • Python字符串切片例子
  • c#string stringbuilder
  • jquery 插件写法
  • android实时获取微信聊天信息
  • 代扣社保代扣公式是什么
  • 陕西国家税务总局官网登录入口
  • 小规模纳税人专票开1%还是3%
  • 重庆市网上审批服务大厅
  • 非房地产企业转让旧房土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设