【快应用】快应用与网页通信踩坑合集处理

 【关键词】

Web、postMessage、onMessage

【问题背景】

快应用中通过web组件加载的h5网页,快应用在和网页进行通信时,经常会遇到网页发送信息给快应用,快应用成功收到,反过来的时候,h5网页就没法收到了。如提示 xxx is not defined、onmessage is not a function等问题,这里就带来这些问题的解决办法。

【问题分析】

问题一:xxx is not defined

如下所示:

快应用端

sendMessage: function () {this.$element('web').postMessage({ data: 'message to Web page' });}

H5端

system.onmessage = function(data) {console.info("onmessage data="+data);//todo}

该问题出现的原因是h5端收到的消息参数没定义导致的,但通常检查时会发现是有在快应用中定义的,这就让不少人费解了。我们可以来看下文档中的介绍:

cke_1259.png

看到这里,很多人会认为文档上是xxx:xxx形式的,我在快应用中也是这样的啊,应该是没问题的。其实不然,这里的参数名是固定的,应该是message:xxxx形式,只有这样写在h5端才能收到消息。

问题二:h5端提示onmessage is not a function

如下所示:

H5端

Window.system.onmessage(res=>{Console.log("onmessage data="+data)})

该问题的原因是h5端调用onmessage方法的方式错误导致的,同样看下文档上所描述的

cke_3241.png

这里该事件的描述是一个可以携带参数的方法,而不是一个有回调结果的方法,所以按正常函数方法的形式去写就可以了。

到这里大家就知道上面两个问题如何去修改了,具体可以看下面的解决方案。

【解决方案】

问题一:

快应用端做如下修改即可,h5端不用变更:

sendMessage: function () {this.$element('web').postMessage({ message: 'message to Web page' });}

或者

sendMessage: function () {let senddata={"message":nativeAdMsg};this.$element('web').postMessage(senddata);  }

问题二:

H5端改成如下形式去接收就可以

system.onmessage = function(data) {console.info("onmessage data="+data);//todo}

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

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

相关文章

2019CVPR Semantic Graph Convolutional Networks for 3D Human Pose Regression

基于语义图卷积网络的三维人体姿态回归 源码 https://github.com/garyzhao/SemGCN 摘要 在本文中,我们研究了学习图卷积网络(GCN)回归的问题。GCN的当前体系结构受限于卷积滤波器和共享的变换矩阵为的小感受野。为了解决这些限制&#xff…

Rider 中C#单元测试

使用NUnit.Framework这个包,没有的话可以用nuget去搜索下载。简单的进行单元测试,想要单元测试好像还给需要static函数,慢慢学学C# using System; using NUnit.Framework;namespace client {public class test{[Test]public static void test…

Vue+NodeJS实现邮件发送

一.邮箱配置 这里以QQ邮箱为例,网易邮箱类似. 设置->账号 二.后端服务搭建 index.js const express require(express) const router require(./router); const app express()// 使用路由文件 app.use(/,router);app.listen(3000, () > {console.log(server…

sklearn中的数据集使用

导库 from sklearn.datasets import load_iris 实现 # 加载数据集 iris load_iris() print(f查看数据集:{iris}) print(f查看数据集的特征:{iris.feature_names}) print(f查看数据集的标签:{iris.target_names}) print(f查看数据集的描述…

期货基础知识

一、期货是什么?  期货是与现货相对应,并由现货衍生而来。期货通常指期货合约,期货与现货完全不同,现货是实实在在可以交易的货(商品),期货主要不是货,而是以某种大众产品如棉花、大…

Nginx从安装到使用,反向代理,负载均衡

什么是Nginx? 文章目录 什么是Nginx?1、Nginx概述1.1、Nginx介绍1.2、Nginx下载和安装1.3、Nginx目录结构 2、Nginx命令2.1、查看版本2.2、检查配置文件正确性2.3、启动和停止2.4、重新加载配置文件2.5、环境变量的配置 3、Nginx配置文件结构4、Nginx具体…

论文阅读_大模型_ToolLLM

英文名称: ToolLLM: Facilitating Large Language Models to Master 16000 Real-world APIs 中文名称: TOOLLLM:帮助大语言模型掌握16000多个真实世界的API 文章: http://arxiv.org/abs/2307.16789 代码: https://github.com/OpenBMB/ToolBench 作者: Yujia Qin 日期…

部署项目至服务器

安装conda https://zhuanlan.zhihu.com/p/489499097 个人租借的服务器如何进行端口的开放呢? 防火墙设置: 添加规则设置: 即可; 通常下租借的服务器没有防火墙设置 相关链接: https://blog.csdn.net/weixin_4520…

算法通关村16关 | 滑动窗口最长字串专题

1. 最长字串专题 1.1 无重复字符的最长字串 题目 LeetCode3 给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度。 思路 找最长字串,需要知道所有无重复字串的首和尾,找出其中最长的,最少两个指针才可以完成&#xff…

PHP8内置函数中的变量函数-PHP8知识详解

在php8中,与变量相关的内置函数比较多,本文说一些比较重要的、常见的内置函数。今日着重讲解了5个,分别是:检测变量是否为空的函数empty()、判断变量是否定义过的函数isset()、销毁指定的变量的函数unset()、获取变量的类型的函数…

Vagrant + VirtualBox + CentOS7 + WindTerm 5分钟搭建本地linux开发环境

1、准备阶段 将环境搭建所需要的工具和文件下载好(页面找不到可参考Tips部分) Vagrant 版本:vagrant_2.2.18_x86_64.msi 链接:https://developer.hashicorp.com/vagrant/downloads VirtualBox 版本:VirtualBox-6.1.46…

使用redis实现队列功能

使用redis实现队列功能 操作方法描述LPUSHLong lPush(String key, String… values)将一个或多个值 value 插入到列表 key 的表头,返回插入后列表中value的数量,若key不存在,会创建一个新的列表并执行 LPUSH 操作RPOPLPUSHString rPopLPush(S…