• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 浅析微信小程序和web之间的交互(代码分享)

浅析微信小程序和web之间的交互(代码分享)

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了微信小程序,web之间的交互等相关知识,希望对您有所帮助

本篇文章给大家了解一下微信小程序和web之间的交互,有需要的朋友可以参考一下,希望对你们有帮助。


浅析微信小程序和web之间的交互(代码分享)


背景

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

接入条件

首先得有开发者权限

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

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

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

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

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

微信 JSSDK 引入

外部引入

<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>//进一步提升服务稳定性,当上述资源不可访问时,可改访问<script type="text/javascript" src="http://res2.wx.qq.com/open/js/jweixin-1.4.0.js "></script>

使用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对组件无效

<!-- 通过src 来传递当前url, 通过bindmessage 来监听html的传值 --><web-view src="{{url}}" bindmessage="getMessage" />

新建/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(); //获取当前环境

相关问题

你有没有遇到过redirectTo死都无法跳转的问题呢,你怎么改他都不执行,或者执行成功了,还是无法跳转,你甚至改为redirectTo都没有用。

因为redirectTo无法跳转到当前的page,以及在app.json下面tabBar=> list里面定义的pagePath,假如你要跳转的url刚好在pagePath里面定义过,那么请使用switchTab。


更多 API

请参见官网API的地址:

https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

请参见微信JS-SDK说明文档的地址:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html




分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手把手教你在微信小程序中使用canvas绘制天气折线图(附代码)
  • 微信小程序页面向下滚动时tab栏固定页面顶部实例讲解
  • uniapp实现微信小程序全局分享的示例代码
  • 浅析微信小程序中自定义组件的方法
  • 微信小程序发布新版本时自动提示用户更新的方法
  • 微信小程序wx.request使用POST请求时后端无法获取数据解决办法
  • 微信小程序如何获取到openid和session_key
  • PHP微信小程序解包过程实例详解
  • 微信小程序中的button按钮宽度设置无效怎么办
  • 微信小程序反编译提取源代码方法

相关文章

  • 2022-04-29在非Laravel项目中怎么使用Validator验证器
  • 2022-04-29PHP怎么判断字符串含不含中文
  • 2022-04-29如何优化jQuery性能?优化方法汇总
  • 2022-04-29PhotoShop简单的制作马赛克拼图字体效果教程
  • 2022-04-29CDR制作冰块立体字
  • 2022-04-29PhotoShop+coreldRAW打造喜迎国庆节海报制作教程
  • 2022-04-29PS制作立体3D烫金艺术文字效果的教程
  • 2022-04-29uniapp怎么实现小程序页面的自由拖拽功能
  • 2022-04-29宝塔面板数据库占用磁盘过大怎么办?
  • 2022-04-29分享几种用PHP写99乘法表的方式

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 详解PHP中的PDO::quote(附代码实例)
    • 一文讲解Wordpress插件怎么查找并安装
    • 总结分享Go中常用的strings函数
    • Photoshop制作由云朵组成的艺术字教程
    • Photoshop CS6制作飞溅的彩色液体字
    • 干货分享:CSS 9种方法实现不定宽高的垂直水平居中
    • 带你了解HTML5 SVG,看看怎么绘制自适应的菱形
    • PhotoShop CS6 3D功能制作3D立体文字效果教程
    • Photoshop设计立体效果的网站推荐图标
    • Photoshop制作网页加载动画教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有