Home > Article > Web Front-end > A brief analysis of the interaction between WeChat applet and the web (code sharing)
In the previous article "In-depth analysis of the basic interaction between React Native and the Web (with code)", I will give you an understanding of the interaction between React Native and the Web. The following article will give you an understanding of the interaction between WeChat applet and the web. Friends in need can refer to it. I hope it will be helpful to you.
Usually we write a set of adaptive web programs and want to use them in a variety of environments. For example, in apps, WeChat In mini programs and various app sharing, if you can only use the app to browse, it is not a big problem, but if you want to interact with the app itself in the embedded app, you have to make various troubles, so this article is here.
Tossing around in ReactNative
, Please look here
You must first have Developer permissions
You must have a server and have permission to upload files, otherwise the verification will not pass
Must be an enterprise applet, personal and Overseas mini programs cannot use the web-view
component
Your relevant domain name is configured with a valid certificate and the https
service## is enabled
apiinterface must also be used
httpsProtocol
JSSDKIntroduction
External introduction
<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>
Use AMD/CMD standard module loading method to load
Installation
npm i weixin-js-sdk
Use
import wx from 'weixin-js-sdk'in main.js to determine whether it is a WeChat applet environment through
userAgent to
micromessenger, Or
window.__wxjs_environment to determine
Starting from WeChat 7.0.0, you can determine the mini program web-view environment by determining that the userAgent contains the word miniProgram.Introducedimport 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, and knowing the environment variables, let’s get started.
Use the components of the applet, create a new /page/webview/index.wxml
web-view will automatically fill the entire mini program page. Personal and overseas mini programs are not supported for the time being. Starting from client version 6.7.2, navigationStyle: custom is invalid for components<!-- 通过src 来传递当前url, 通过bindmessage 来监听html的传值 --> <web-view src="{{url}}" bindmessage="getMessage" />
New/page/webview/index.js
// pages/webview/index.js const 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, }; }, });Interaction example web sideOn the web side, we know how to determine whether the web is in a mini program. We can directly send interactive information through WeChat
jsskd, and in the native WeChat mini program Same
Make routing jump
// 前面我们已经定义了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"), }); }
Send data to the mini program
wx.miniProgram.postMessage({ data: { hello: "wrold", }, }); //web-view 则通过 bindmessage 来监听 传过来的数据
More methods
wx.miniProgram.navigateBack(); //返回 wx.miniProgram.switchTab(); //切换底部的导航 wx.miniProgram.reLaunch(); //重新加载 wx.miniProgram.redirectTo(); //地址重定向 wx.miniProgram.getEnv(); //获取当前环境Related questions
redirectTo being unable to jump even if you die? How do you change it? They are not executed, or the execution is successful, but still cannot jump. Even if you change it to
redirectTo, it will be useless.
redirectTo cannot jump to the current
page, and
tabBar below app.json
=> pagePath
defined in list, if the
url you want to jump to happens to be defined in
pagePath, then please use switchTab.
More API
Please refer to the official API address: https://developers.weixin .qq.com/miniprogram/dev/component/web-view.html Please refer to the address of WeChat JS-SDK documentation: https://developers.weixin.qq.com /doc/offiaccount/OA_Web_Apps/JS-SDK.htmlRecommended learning:
The above is the detailed content of A brief analysis of the interaction between WeChat applet and the web (code sharing). For more information, please follow other related articles on the PHP Chinese website!