热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小程序嵌套h5页面_uniapp中使用webview微信小程序嵌套H5

uni-app中使用web-view微信小程序嵌套H5由于项目需要,我们的小程序中嵌套了web-view,对于第一次接触uni-app,第

uni-app 中使用 web-view 微信小程序嵌套H5

由于项目需要,我们的小程序中嵌套了web-view, 对于第一次接触uni-app,第一次用web-view的我真的是踩坑无数,屡次站在放弃的边缘,终于在今天搞定了。所以我感觉有必要更新一篇关于uni-app中嵌套web-view的文章,希望下面的文章可以帮助到正在学习的朋友吧。

1、uni-app 中为什么要嵌套 web-view ?

2、uni-app 中如何嵌套 web-view ?

3、 uni-app 中的嵌套的web-view 和h5 之间如何通信?

4、uni-app 嵌套 web-view 在微信小程序中 需要注意什么呢?

接下来我们就一起来解答上面的问题吧!

1、uni-app 中为什么要嵌套 web-view ?

什么是web-view?

web-view 是一个 web 浏览器组件,可以用来承载网页的容器,会自动铺满整个页面(nvue 使用需要手动指定宽高)。

为什么要使用web-view?

按照正常的流程我们修改了什么东西都需要提交新版本审核,第一,灵活性不够,第二,审核有时候就不通过很麻烦。所以如果采用web-view,这样我们在修改了什么文案或者临时的活动的时候就不需要等待审核这些事情了,操作起来非常的灵活。(个人项目重的感受)

2、uni-app 中如何嵌套 web-view ?

很多人在学习的时候都回去网上查,我呢也不例外,但是这次项目中身边写小程序的人少之又少,网上的案例也是很多不能运行起来(可能是我太笨了吧),写完整个项目后最大的感受就是:官网就是最好的案例。

无论做什么的时候我们真的应该好好认真的去看一遍官网的文档,这样子会少踩很多坑的。

下面我们就详细的介绍一下如何在uni-app 微信小程序中嵌套 web-view呢?

第一步: uni-app项目中新建一个页面 webView

代码如下:

export default {

data() {

return {

webUrl: 'https://www.aliyue.net',

}

},

onLoad(options) {

},

methods: {

message(event){

console.log(event.detail.data)

}

}

}

效果图:

注意:

小程序仅支持加载网络网页,不支持本地html

小程序端 web-view 组件一定有原生导航栏,下面一定是全屏的 web-view 组件,navigationStyle: custom 对 web-view 组件无效。

App 端使用 自定义组件模式 时,uni.web-view.js 的最低版为 uni.webview.1.5.2.js

App 平台同时支持网络网页和本地网页,但本地网页及相关资源(js、css等文件)必须放在 uni-app 项目根目录->hybrid->html 文件夹下,如下为一个加载本地网页的uni-app项目文件目录示例:

nvue web-view 必须指定样式宽高

V3 编译模式,网页向应用 postMessage 为实时消息

第二步: 新建一个H5 页面 index.html 【这里给大家粘贴一个完整的代码复制粘贴即可用,这里我用的vue的】

.btn{

display: block;

margin: 10px auto;

width: 40%;

height: 45px;

line-height: 45px;

text-align: center;

border-radius: 10px;

background-color: #259F3B;

color: #FFFFFF;

border: none;

}

这里是小程序来的数据:{{wxdata}}

向页面发送数据1

向页面发送数据2

var app = new Vue({

el: '#app',

data: {

wxdata: "abc"

},

mounted() {

this.$nextTick(() => {

document.addEventListener('UniAppJSBridgeReady', function() {

uni.getEnv(function(res) {

console.log('当前环境:' + JSON.stringify(res));

});

});

})

},

created() {

this.wxdata = this.getQueryString('wxdata') || 'abc'

console.log(this.wxdata)

},

methods: {

postWx() {

uni.switchTab({

url: '/pages/my/my'

});

uni.postMessage({

data: {

action2: '我是按钮2',

action1: '我是按钮1'

}

});

},

postWx2() {

uni.switchTab({

url: '/pages/my/my'

});

uni.postMessage({

data: {

action2: '我是按钮2',

action1: '我是按钮1'

}

});

},

getQueryString: function(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

var r = window.location.search.substr(1).match(reg);

if (r != null) {

return decodeURIComponent(r[2]);

}

return null;

}

}

})

下面说一下h5 页面的几个需要注意的事项

移动端meta标签设置

JS SDK的引入【这里是以微信小程序为案例】

注意⚠️: 这里的引入顺序不能变

src 路径, 小程序必须是网络链接,不可用本地链接【其他平台请看官网吧,不在这里写了】

3、uni-app 中的嵌套的web-view 和h5 之间如何通信?

内嵌很容易,那么他们之间如何做到相互通信的呢?下面我们一起分享一下

——- uni-app 向 h5 传递参数【通过src 的 url 】

这里webUrl里面添加参数 ?id=123&name=abc&age=12

data() {

return {

webUrl: 'https://www.aliyue.net?id=123&name=abc&age=12',

}

},

H5 页面如何接收这些参数呢?在methods 里面定义此方法,获取小程序里传递过来的参数

getQueryString: function(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

var r = window.location.search.substr(1).match(reg);

if (r != null) {

return decodeURIComponent(r[2]);

}

return null;

}

// 我一般是在created 里面接收传递过来的参数

let id = getQueryString('id')

let name = getQueryString('name')

let age =getQueryString('age')

这里需要注意的,如果您向要传递一个布尔值,那么接收到的其实是一个字符串,这个一定要注意。

——- h5 向 uni-app 传递参数【通过 uni.postMessage 】

postWx() {

uni.switchTab({

url: '/pages/my/my'

});

uni.postMessage({

data: {

action2: '我是按钮2',

action1: '我是按钮1'

}

});

},

我们通过 uni.postMessage 来向页面传递数据,格式必须是data:{ 这里面就是要传递的数据 }

小程序如何接收数据呢?【 @message=”message” 】

这里通过@message 的方法来接收H5 所传递来的数据

methods: {

message(event){

console.log(event.detail.data)

}

}

event.detail.data 里面就是我们接收到的数据

网页向应用发送消息,在  的 message 事件回调 event.detail.data 中接收消息。

Tips

传递的消息信息,必须写在 data 对象中。

event.detail.data 中的数据,以数组的形式接收每次 post 的消息。

4、uni-app 嵌套 web-view 在微信小程序中 需要注意什么呢?

下面注意点是我自己项目中遇到的

微信小程序中 src 必须为网络路径,如果测试也可以用编辑器直接运行到浏览器,或者本地模拟一个服务也可以

如果在小程序中获取不到数据那么请看一下自己的点击事件,

@message

EventHandler

网页向应用 postMessage 时,会在特定时机(后退、组件销毁、分享)触发并收到消息。

H5 暂不支持(可以直接使用

这里在H5页面做跳转的时候我们就需要注意一下用哪个跳转的方法了。

暂时总结到这里吧,后期有变化再补充。

————– 微信小程序 实战教程————-

全部高清,无密,云盘下载



推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
author-avatar
xuncijins
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有