日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本篇文章給大家了解一下微信小程序和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會自動鋪滿整個小程序頁面,個人類型與海外類型的小程序暫不支持使用??蛻舳?.7.2版本開始,navigationStyle: custom對組件無效

<!-- 通過src 來傳遞當前url, 通過bindmessage 來監聽html的傳值 -->
<web-view src="{{url}}" bindmessage="getMessage" />

新建/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,
    };
  },
});

交互示例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




分享到:
標簽:微信小程序 web之間的交互
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定