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

设计师网站推荐百度 seo排名查询

设计师网站推荐,百度 seo排名查询,大型电子商务网站建设公司,东台做网站背景 近期有个微信小程序需要用到web-view嵌套H5的场景,该应用场景需要小程序中频繁传递数据到H5进行渲染,且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大,显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…

背景

        近期有个微信小程序需要用到web-view嵌套H5的场景,该应用场景需要小程序中频繁传递数据到H5进行渲染,且需要保证页面不刷新。

        由于微信小程序与H5之间的通信限制比较大,显然无法满足于我的业务场景

探索

        由于微信小程序与webview的环境是完全隔离的,且没有突破的地方,只能将关键点放在已开放的方式上来;中间有利用公共存储空间cookie、SessionStorageLocalStorage,但是很遗憾,无法突破,后面也采用websocket利用服务器来进行双向交互,但是由于网络的不稳定性,导致数据可能会有一定的延迟。

思路

        既然小程序只能通过改变url链接来向H5传递参数,那么我就动态改变url来传递即可,但是还需要解决的问题是,一旦改变url页面会重新加载,这个是不能接受的。

        路由的hash模式正好可以做到这一点,那么我们通过动态改变urlhash值,H5页面监听hash值的变化就能完美解决该问题了,话不多说,直接开干。

实战

小程序

web-view代码

<web-view src="{{url}}{{hashStr}}"></web-view>

 小程序js代码,代码通过setInterval模拟实时传递不同参数到H5

Component({data: {url: `http://127.0.0.1:8080/home?type=wx`,hashStr: '',},methods: {onLoad: function () {const _this = this;           setInterval(() => {//此处模拟动态改变url的hash值给h5传值const postData={name: 'zhangsan',time: +new Date()}_this.setData({hashStr:`#time=${JSON.stringify(postData)}`})}, 2000);},}
});

注意:hashStr的值必须以#开始,浏览器才会识别为hash,否则无效

H5应用

在js中添加一个hashchange监听window.location.hash的变化即可


window.onhashchange = function() {console.log('The hash has changed!');const newHash = window.location.hash;console.log('New hash:', newHash);
};

以上方式即可完美解决我的应用场景


以为结束了,其实还没有,上面的方式的确可行,但是我是vue项目呀,其中还用到了vue-router组件,通过上述直接监听页面还是会刷新

 由于使用了vue-router插件,那么hash的变化,vue-router会默认通过hash来进行导航,也会加载刷新页面,所以我们还需要设置一个路由守卫,用来判断如果path没有变化,只是hash改变,则不进行导航具体配置如下:

import {createRouter, createWebHashHistory} from "vue-router";const routes= [ {path: '/home',name: 'home',component: () => import('../components/Home.vue')},
]
const router = createRouter({history: createWebHashHistory(),routes
});router.beforeEach((to, from, next) => {if (to.path===from.path) {     next(false); // 阻止导航行为} else {next(); // 正常导航}
});export default router;

注意点:

1、微信小程序会对url进行decodeURIComponent编码,故在解析的的时候,注意使用encodeURIComponent解码

2、如果动态改变url的hash频率过快,由于vue-router在内部调用了history.replaceState(),如果太频繁会触发浏览器的安全策略抛出一个SecurityError错误,这个可能是我的vue-router版本浏览器兼容性问题导致的,对此没有深究,有哪位大佬知道的麻烦为小弟解惑。

SecurityError: Failed to execute replaceState onHistory: Attempt to use history.replaceState() more than100 times per 30 secondsin

http://www.yidumall.com/news/32609.html

相关文章:

  • 弹幕网站是什么技术做的seo销售是做什么的
  • 忘记wordpress登录密码忘记网站优化方案模板
  • 做那个免费观看视频网站潍坊seo培训
  • 成人本科自考高级seo
  • 哪种公司一般会做网站长沙专业竞价优化首选
  • 博为峰软件测试培训靠谱吗南昌seo数据监控
  • 手机建行网站企业网络营销策划方案范文
  • 网站 数据库 sql 导入数据库长尾词挖掘
  • o2o平台都有哪些网站公司成都网站维护
  • 北京开发区建设委员会网站资格中国营销传播网
  • 怎么做诈骗网站5g影讯5g天线在线观看免费视频
  • 网站方案组成要素建网站的流程
  • 七台河网站制作青岛seo服务哪家好
  • 各大门户网站有哪些关键词排名的工具
  • 做网站的前景如何品牌营销策略有哪些方法
  • 白云区做网站百度官网app下载安装
  • 百度官方网站seo是免费的吗
  • 配资网站建设是什么2020年度关键词有哪些
  • 绍兴网站建设08keji广告投放网站
  • ssh做的网站抖音怎么推广
  • 公司要建设网站需要那些程序最稳定的灰色词排名
  • 基于html5设计的网站建设外链服务
  • 做高端网站的网络公司北京做网站公司哪家好
  • wordpress 邀请注册年度报告酒店seo是什么意思
  • 衡水做外贸网站seo培训学什么
  • 自己做的网站怎么爬数据微信运营技巧
  • 网站的程序和数据库怎么做快速排名服务平台
  • 什么站做咨询网站好今天的新闻 联播最新消息
  • 免费网站推广优化crm系统
  • 布吉个人网站建设百度资源搜索平台官网