当前位置: 首页 > wzjs >正文

建设户外腰包网站西安网站关键词优化费用

建设户外腰包网站,西安网站关键词优化费用,做网站建设小程序,企业自助建站的网站web-view是uni-app的一个内置组件,可以在应用里打开指定的网页,应用和网页之间可以收发消息。 官方文档地址:官网>文档>组件>内置组件>web-view 目录: 1.调用uni.postMessage被告知方法不存在(uni.postMe…

web-view是uni-app的一个内置组件,可以在应用里打开指定的网页,应用和网页之间可以收发消息。

官方文档地址:官网>文档>组件>内置组件>web-view

目录:

  • 1.调用uni.postMessage被告知方法不存在(uni.postMessage is not a function)
  • 2.H5无法接收消息
  • 3.根据官方文档中的示例编写HTML页面
  • 4.VUE项目作为网页端调用uni.postMessage方法

1.调用uni.postMessage被告知方法不存在(uni.postMessage is not a function)

官方文档web-view有几个相关方法,**uni.postMessage(OBJECT)**的描述是:网页向应用发送消息:

postMessage

web-view是uniapp内置组件,并有自带的方法可以支持消息传递,考虑到uniapp本身可以发布成H5网页,所以就直接创建了一个新的uniapp项目,用来做跳转目标网页。

直接在新项目index页面测试:

<template><button type="button" @click="sendMess">发送</button>
</template><script setup>const sendMess = (e) => {uni.postMessage({data: {action: 'message'}});}
</script><style lang="scss" scoped>
</style>

然后在应用里添加web-view,指向目标网页:

<web-view src="目标网页" @message="消息接收方法"></web-view>

在手机上测试可以正常打开网页,但是点击按钮,调用uni.postMessage方法时报错:

TypeError: uni.postMessage is not a function

这里先试用了uniapp其他几个常用的内置API,比如uni.showToast(OBJECT),来证明内置的方法有正常加载,点击按钮,结果正常运行:

	uni.showToast({title: '标题',duration: 2000});

重新阅读文档,发现在web-view加载HTML网页的示例中,引入了一个uni.webview.js文件,因为这个示例是个传统的HTML页面,之前以为用的是内置方法就忽略了:
webview.js
把文件下载下来,下载地址文档上有提供,当前最新是1.5.6:
https://gitcode.net/dcloud/uni-app/-/raw/dev/dist/uni.webview.1.5.6.js
在网页项目的main.js文件中对文件进行引用:

import '/static/js/uni.webview.1.5.6.js'

重新点击按钮,问题仍然存在,但是把uni对象打印出来,前后对比发现多了一个webView,展开就看到了相关方法:
webView
所以发送方法改成:

<script setup>const sendMess = (e) => {uni.webView.postMessage({data: {action: 'message'}});}
</script>

消息正常发送并接收。

2.H5无法接收消息

上边用手机测试通过,但在浏览器中进行访问,就接收不到消息:

官方文档中有标示:
H5 暂不支持

根据文档需要用window.postMessage,这个方法之前使用,是在web网页中嵌套iframe,父子页面通信的时候,文档上可以看到组件会被转成iframe:

iframe

注意:这里只要修改应用这边(变成浏览器访问之后就是父级页面这里),需要以window.addEventListener监听消息,网页端也就是子级不需要修改。

<template><view><web-view src="目标网页" @message="listenMess"></web-view></view>
</template><script setup>import {onBeforeUnmount} from "vue";import {onLoad} from "@dcloudio/uni-app";const listenMess = (e) => {console.info(e);}onLoad(() => {// #ifdef H5window.addEventListener('message', listenMess, false);// #endif});onBeforeUnmount(() => {// #ifdef H5window.removeEventListener("message", listenMess);// #endif});
</script><style lang="scss" scoped></style>

使用方法window.addEventListener监听消息,添加window.removeEventListener防止监听重复执行,需要注明只在H5情况下执行,否则手机应用会报错:

TypeError: Cannot read property 'addEventListener' of undefined

3.根据官方文档中的示例编写HTML页面

官方文档示例是一个传统的HTML页面,写个简单的页面用nginx发布出来(web-view仅支持加载网络网页,不支持本地html),作为目标网页试一下:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>测试</title></head><body><button id="sendMess">发送</button><script type="text/javascript" src="/uni.webview.1.5.6.js"></script><script type="text/javascript">document.getElementById('sendMess').addEventListener('click', function() {uni.postMessage({data: {action: 'message'}});});</script></body>
</html>

注意:这里是uni.postMessage,和uniapp项目中调用不同。

经测试消息可以成功传递。

然后文档上还写到uniapp项目里也能加载html网页,只要把文件放在/hybrid/html中:
html文件存放路径
写个html放进去,uni.webview.1.5.6.js放到js路径里:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>测试</title></head><body><button onclick="sendMess()">发送</button><script src="/hybrid/html/js/uni.webview.1.5.6.js"></script><script type="text/javascript">function sendMess() {uni.postMessage({data: {action: 'message'}});}</script></body>
</html>

经测试消息可以成功传递。

4.VUE项目作为网页端调用uni.postMessage方法

因为之前有个vue2的项目里有相应功能网页,就拿来用做目标,然后在依赖库里搜到了@dcloudio/uni-webview-js,就没用上边的js,直接安装引入之后,实测可以正常使用:

<template><el-button type="primary" @click="sendMess">发送</el-button>
</template>
<script>
import uniWebview from '@dcloudio/uni-webview-js'
export default {components: {uniWebview},methods: {sendMess() {uniWebview.postMessage({data: { action: 'message' }});}}
}
</script><style></style>
http://www.dtcms.com/wzjs/327238.html

相关文章:

  • 怎么去建设微信网站lol今日赛事直播
  • 网站建设应该学什么软件百度投放广告怎么收费
  • 国外做调灵风暴的网站世界军事新闻
  • 做情人在那个网站seo实战培训费用
  • 怎么做网站文章伪原创什么是sem
  • 天津网站推广公司哪家好怎么做优化关键词
  • 在深圳怎么进大公司网站免费做网站的网站
  • 台湾 wordpress 申请宁波seo优化报价多少
  • 中国最大的家装网站宁波seo外包优化
  • 办公空间设计说明300字优化搜狗排名
  • 优秀网站作品截图市场调研问卷
  • 做曖視頻网站武汉seo哪家好
  • 中国建设银行积分商城网站一个网站可以优化多少关键词
  • 做网站 智域大连qq推广官网
  • 建个网站 费用seo排名优化排行
  • 网站建站和项目部署一样吗上海最新发布最新
  • 贸易网站建设公司郑州网络推广代理
  • 网销具体怎么做网站百度知道下载
  • 网站建设中gifseo和sem是什么意思啊
  • 大型网站开发语言java优化网络搜索引擎
  • 直播软件平台排名seo公司
  • ps做 网站标准尺寸是多少合适站长百度
  • 梅州东莞网站建设账户竞价托管哪里好
  • 东莞网站设计定制开发最有效的线上推广方式
  • wordpress赚钱网站如何开发网站平台
  • 企业网站可以做一级等保吗百度平台投诉人工电话
  • wordpress翻页插件下载标题优化怎么做
  • 凡科怎样免费做网站百度打车客服电话
  • 网站开发技能网站流量统计工具有哪些
  • 日照东港建设局网站外链平台有哪些