文章缩略图

微信小程序和web之间的交互(附带代码)

2021-08-17 00:00:00 技术教程 9009 阅读需46分钟
图标

本文最后更新于2021-08-17 00:00:00已经过去了1349天 请注意内容时效性

热度 143 评论 0 点赞78
钞能力。你在哪?此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“钞能力。你在哪?”或者“mdyc919293”或者微信扫描右侧二维码关注公众号。

微信小程序和web之间的交互(附带代码) 技术教程
通常我们写了一套自适应的web程序,想在多种环境中使用.比如app里,微信小程序里,各种app分享中,假如只是能使用app浏览,问题不大,但是要在被嵌入app里面和app本身交互,就要做各种折腾,如是就有了本文。

接入条件
首先得有开发者权限

你得有台服务器,有权限上传文件,不然验证无法通过

必须是企业小程序,个人和海外小程序无法使用web-view组件

你的相关域名配置了有效的证书,并且开启了https服务

你要访问的网址必须加入了业务域名白名单,网址所调用的api接口必须加入了服务器域名白名单,并且api接口也使用的https协议

以上条件必须同时满足,缺一不可微信JSSDK引入

微信 JSSDK 引入
外部引入

//进一步提升服务稳定性,当上述资源不可访问时,可改访问使用AMD/CMD标准模块加载方法加载

安装

npm i weixin-js-sdk
判断是微信小程序环境
通过userAgent为micromessenger,或者window.__wxjs_environment来判断

从微信 7.0.0 开始,可以通过判断userAgent中包含miniProgram字样来判断小程序web-view环境。

import wx from "weixin-js-sdk"; let OS = "PC"; //假设有多种环境 let ua = window.navigator.userAgent.toLowerCase();if (  ua.indexOf("micromessenger") >= 0 ||  window.__wxjs_environment === "miniprogram") {  //在微信或者小程序中  wx.miniProgram.getEnv((res) => {    if (res.miniprogram) {      //在小程序中      OS = "wxminiprogram";      window.wx = wx;    } else {      //在微信中      OS = "weixin";    }  });} 

引入了sdk,知道了环境变量,下面就是开干了。

交互示例小程序端
使用小程序端的组件,新建/page/webview/index.wxml

web-view会自动铺满整个小程序页面,个人类型与海外类型的小程序暂不支持使用。客户端6.7.2版本开始,navigationStyle: custom对组件无效

新建/page/webview/index.js// pages/webview/index.jsconst app = getApp();Page({  data: {    url: "",    shareData: {},    postData: {},  },  onLoad: function (options) {    // nickName ,token 是登录之后拿到的信息 , 用来和h5 交互    let nickName = wx.getStorageSync("nickName");    let token = wx.getStorageSync("token");     let url = options.url;    if (url) {      //请注意传递url 请务必使用 decodeURIComponent 和 encodeURIComponent , 不然会白屏      url = decodeURIComponent(url);    }    //因为小程序 貌似还不能主动和H5 交互,所以拿到的登录信息,我们通过url 来传递.    let localUrl = "";    if (token) {      localUrl = url + "?token=" + userToken + "&nickName=" + nickName;    }    //犹豫地址存了token 和其他信息,分享会暴露,所以要手动重置分享地址 数据为 shareData    this.setData({      url: localUrl,      shareData: {        titil: "测试小程序",        desc: "测试小程序藐视描述",        path: url,      },    });  },  getMessage(e) {    //此处接收html传递过来的参数    this.postData = e.detail.data;  },  /**   * 用户点击右上角分享   */  onShareAppMessage() {    //重置分享链接和路径    return {      title: this.shareData.title,      desc: this.shareData.desc,      path: this.shareData.path,    };  },});

交互示例web端
在web端,我们知道如何判断web是在小程序中,可以通过微信jsskd直接发送交互信息,和在原生的微信小程序里一样

做路由跳转

// 前面我们已经定义了window.wx = wx ,这里可以直接调用// 还可以通过url 来获取token 等相关信息 if (OS == "RN") {  //这里假设我们有多重环境..}if (OS == "wxminiprogram") {  wx.miniProgram.navigateTo({    url:      "/pages/webview/index?url=" +      decodeURIComponent("https://www.chuchur.com?id=100"),  });}给小程序发送数据wx.miniProgram.postMessage({  data: {    hello: "wrold",  },});//web-view 则通过 bindmessage 来监听 传过来的数据 

更多方法

wx.miniProgram.navigateBack(); //返回wx.miniProgram.switchTab(); //切换底部的导航wx.miniProgram.reLaunch(); //重新加载wx.miniProgram.redirectTo(); //地址重定向wx.miniProgram.getEnv(); //获取当前环境
你可能想看:
继续阅读本文相关话题
程序代码程序的英文程序员程序正义程序员需要什么学历程序员是干什么的程序员自学程序失控程序是什么意思程序教学程序员客栈官网程序编程软件程序员客栈程序员导航程序流程图程序员导航网程序文件程序法程序员论坛程序员计算器程序员接单程序员鱼皮程序员简历程序员接单平台微信小程序怎么制作自己的小程序微信小程序打不开一直加载微信小程序怎么批量删除微信小程序怎么弄出来微信小程序开发平台微信小程序官网微信小程序在哪里找?微信小程序游戏微信小程序怎么删除一键清理微信小程序怎么注册申请微信小程序官网平台入口微信小程序平台登录入口微信小程序官网平台入口官网登录微信小程序登录入口微信小程序怎么制作自己的程序微信小程序开发工具微信小程序后台管理入口微信小程序入口登录微信小程序开发文档微信小程序后台微信小程序登录微信小程序平台微信小程序开放平台微信小程序支付微信小程序备案微信小程序开发框架代码代码生成器代码网站代码随想录代码运行代码ai编写代码怎么编写代码是什么意思代码运行软件代码编程教学入门代码大全代码编辑器代码大全可复制代码运行在线工具代码坦克代码练习代码写好了怎么在电脑上运行代码怎么写代码对比代码ai代码格式化代码审计代码高亮母猪人工授精技术教程多箱体养蜂技术教程凹陷修复技术教程汽车喷漆技术教程母牛人工授精技术教程鹅孵化技术教程修鞋补鞋技术教程鹅苗孵化技术教程ai技术入门教程技术开锁教程视频技术教程资源网技术教室技术员技术学习技术分析 教学
更多推荐
发表评论

共有[ 0 ]人发表了评论

🥰 😎 😀 😘 😱 🤨 🥵 😔 😤 😡 😭 🥱 🤡 ☠️ 💖 🤖 💢 💥

评论列表
暂无评论

暂时没有评论,期待您的声音!

品牌认证 W3C认证 MYSSL认证 TrustAsia 安全签章
扫码访问手机版
二维码图片