【工作实践-06】uniapp使用webView

一、建立APP页面和webview的通讯

        1.引入webview.js

                App 端使用 uni.web-view.js 的最低版为 uni.webview.1.5.4.js

                APP端可以支持网络网页和本地网页,但如果使用本地网页和相关资源(js、css等文件)必须放在 static 目录下。 

        2.引入搭桥document.addEventListener('UniAppJSBridgeReady',function(){})

在app端是识别不到document元素的,所以为了适配app,需要将搭桥的方法单独建立一个js文件放到 static 目录下

document.addEventListener('UniAppJSBridgeReady', function () {console.log('我建立起了通讯');uni.postMessage({data: {successFlag: true,}});
})

        3.发送消息

                 首先<web-view>中需要添加message的监听,当网页向应用 postMessage 时,会在特定时机(后退、组件销毁、分享)触发并收到消息。

<web-view ref="webview" :src="webViewUrl" @message="onPostMessage"></web-view>

                 其次网页向应用 postMessage 需要通过 wv.evalJS(``)方法,在此方法中利用uniapp的postMessage()方法向应用发送消息

wv.evalJS(`uni.postMessage({data: {base64: canvas.toDataURL("image/png"),}});	`)

                最后在uniapp通过 onPostMessage 函数中获取网页信息

onPostMessage: function (e) {console.log(e.detail.data[0])},

 二、webview初始化遇坑

         1.setJsFile() 和 appendJsFile() 方法的区别

                在初始化webview时,需要引入webview.js文件和添加的搭桥 js (post.js)文件 

                此时需注意 setJsFile() 和 appendJsFile() 方法的区别:

                setJsFile:设置新的JS文件后将清空之前设置的值。也就是后台如果一直 setJsFile,那么只有最后一个js文件生效

                appendJsFile:添加多个js文件将按照添加的先后顺序执行。

        2. 文件路径

                 setJsFile() 和 appendJsFile()方法中所写的文件路径一定要正确

                如果文件路径从static目录开始写,比如这样:

wv.setJsFile("static/uni.webview.1.5.5.js")
wv.appendJsFile("static/post.js")

                这样写在安卓端没有问题,运行很顺利,但是在 IOS 端就会发现这两个方法所加文件并未生效,所以文件路径一定要写正确,默认带上'_www'

wv.setJsFile("_www/static/uni.webview.1.5.5.js")
wv.appendJsFile("_www/static/post.js")

         3. setJsFile() 和 appendJsFile()方法所写时机

                在渲染时写 setJsFile() 和 appendJsFile()方法,在安卓端不会有任何问题,但在IOS端会发现这两个方法并未生效

                因此建议在 IOS 端  setJsFile() 和 appendJsFile() 操作应放在监听 loaded 事件之后

            var currentWebview = this.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效this.wv = currentWebview.children()[0]this.wv.addEventListener("loaded", () => {this.wv.setJsFile("_www/static/uni.webview.1.5.5.js")this.wv.appendJsFile("_www/static/post.js")console.log('加载完成');this.getImg() // 加载完成后获取一次验证码图片,但可能获取为空}, false);

        4.setStyle()设置样式只能在APP端生效

                只有app可以设置webview的宽高,其他的端是无解的

                利用节点信息减去其他内容的高度,得到webview的高度,this.scope.scope.scope.getAppWebview()获取webview实例(只能app使用),再修改实例setStyle设置。

        5.层级问题(事件不触发)

                在uniapp使用webview时,需要注意样式层级问题,如下代码,若在当前页面使用了webview,则点击时不会触发点击事件,原因就是webview显示层级高于当前页面

                解决:添加样式层级:z-index: 999;

        <view class="privacy"><view @click="toPrivacy('user')"><u--text text="机电用户协议" size="12"></u--text></view>、<view @click="toPrivacy('privacy')"><u--text text="隐私协议" size="12"></u--text></view></view>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/714392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL中int类型达到上限的一些处理方案

使用int类型作为表的主键在pg中是很常见的情况&#xff0c;但是pg中int类型的范围在-2147483648到2147483647&#xff0c;最大只有21亿&#xff0c;这个在一些大表中很容易就会达到上限。一旦达到上限&#xff0c;那么表中便没办法在插入数据了&#xff0c;这个将会是很严重的问…

【react native】css踩坑记录

1、IOS上面opacity重叠失效 在 iOS 上&#xff0c;当两个具有相同背景色的元素重叠时&#xff0c;不透明度&#xff08;opacity&#xff09;较低的元素会显示在较高的元素上方。 所以考虑使用rgba的形式。 // 对于下面这种写法&#xff0c;如果存在container和activeIndicat…

word文档空格不能有下划线【笔记】

word文档空格不能有下划线 2024-3-1 21:20:24 推荐 word下划线打不出来了&#xff0c;是怎么回事&#xff1f; 问题 字后面打不出来下划线 操作 1.点击文件 左上角&#xff0c;点击“文件”。 2.点击选项 鼠标下滑&#xff0c;点击“选项”。 3.点击常规与保存 点击“…

java基础-mysql

文章目录 mysql基础面试题什么是mysql什么是事务并发事务带来的影响事物的隔离级别索引大表优化什么是池化思想&#xff0c;什么是数据库连接池&#xff0c;为什么要用数据库连接池⾏锁&#xff0c;表锁&#xff1b;乐观锁&#xff0c;悲观锁MySQL主备同步的基本原理SQL什么情况…

[⑥5G NR]: 无线接口协议,信道映射学习

5G系统整体包括核心网、接入网以及终端部分&#xff0c;接入网与终端间通过无线空口协议栈进行连接。无线接口可分为三个协议层&#xff1a;物理层&#xff08;L1&#xff09;、数据链路层&#xff08;L2&#xff09;和网络层&#xff08;L3&#xff09;。 L1&#xff1a;物理…

【python】json转成成yaml中文编码异常显示成:\u5317\u4EAC\u8DEF123\u53F7

姊妹篇&#xff1a;【python】json转成成yaml json数据 {"name": "张三","age": 30,"isMarried": false,"children": [{"name": "小王","age": 5},{"name": "小李",&qu…

mysql冷备

数据库备份类型 冷备份&#xff1a;在数据库停止服务的情况下进行备份 热备份&#xff1a;在数据库处于运行状态下进行备份 温备份&#xff1a;不可写但可读的情况下进行备份 冷备分时&#xff0c;只需要在停止数据库后&#xff0c;拷贝数据目录到另一个地方即可。 mysql 启…

为什么不能启动游戏错误代码126 加载bugreportnew.dll失败

错误代码126通常表示在尝试加载某个动态链接库&#xff08;DLL&#xff09;文件时出现了问题。在您提到的例子中&#xff0c;bugreportnew.dll 文件未能成功加载&#xff0c;这可能是由于以下几个原因&#xff1a; 腾讯云2024新春采购节优惠活动入口&#xff1a;https://curl.q…

Linux---进程信号

一、信号的概念 信号是一种向目标进程发送通知消息的机制 信号的特性(可以结合红绿灯、防空警报等生活样例来理解) 1、在信号没有出现之前&#xff0c;我们就已经知道如何去处理信号&#xff0c;即我们认识信号 2、信号是异步产生的&#xff0c;即我们不知道它具体何时产生 3、…

基于MQTT协议实现微服务架构事件总线

一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件&#xff0c;大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…

Redis 之七:穿透、击穿、雪崩

&#xff08;本内容部分来自知乎网等网络&#xff09; Redis 缓存的使用&#xff0c;极大的提升了应用程序的性能和效率&#xff0c;特别是数据查询方面。但同时&#xff0c;它也带来了一些问题。其中&#xff0c;最要害的问题&#xff0c;就是数据的一致性问题&#xff0c;从严…

Educational Codeforces Round 132 (Rated for Div. 2) E. XOR Tree(启发式合并+贪心)

题目 n(n<2e5)个点的树&#xff0c;点i权值ai&#xff08;1<ai<2^30&#xff09; 修改最少的点的权值&#xff0c;使得树上不存在异或和为0的简单路径&#xff0c;输出最少的点数 权值可以被修改成任意正整数&#xff08;可以是无限大&#xff09; 思路来源 官方…

【leetcode】环形链表✚环形链表II

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1.环形链表解题拓展&#xff1a; 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…

【算法集训】基础算法:基础排序 - 插入排序

一、基本理解 插入排序(nsertion Sort)&#xff0c;一般也被称为直接插入排序&#xff0c;是一种简单直观的排序算法。 **工作原理&#xff1a;**将待排列元素划分为「已排序」和「未排序」两部分&#xff0c;每次从「未排序的」元素中选 择一个插入到「已排序的」元素中的正确…

剑指offer58—II 左旋转字符串 c++

题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “…

MySQL 多表查询 连接查询 内连接

介绍 内连接查询是两张表中交集的部分 连接模式 隐式内连接 SELECT 字段列表 FROM 表1,表2 WHERE 条件显式内连接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件案例 有两张表一个表为学生表&#xff0c;另一个表为班级表&#xff0c;现在需要查询学生时候在查…

接口测试(全)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 大多数人对于接口测试都觉得是一种高大上的测试&#xff0c;觉得…

羊大师分析,羊奶粉适合什么样的人群喝

羊大师分析&#xff0c;羊奶粉适合什么样的人群喝 羊奶粉适合多种人群食用&#xff0c;包括儿童、老年人、孕妇以及身体虚弱或处于疾病康复期的人群。 对于儿童来说&#xff0c;羊奶粉是一种很好的营养品。它含有丰富的蛋白质、脂肪、矿物质和维生素&#xff0c;能够满足儿童…

【前端素材】推荐优质后台管理系统网页Star admin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使…

三种图片预览插件viewer、vue-photo-preview、vue-picture-preview

第一种&#xff1a;viewerjs使用介绍 1、先安装依赖 npm install v-viewer --save2、main.js内引用并注册调用 //main.js import Viewer from ‘v-viewer’ import ‘viewerjs/dist/viewer.css’ Vue.use(Viewer); Viewer.setDefaults({ Options: { “inline”: true, “butt…