1. 程式人生 > >wechat-小程式web-view與網頁互動

wechat-小程式web-view與網頁互動

wechat-小程式web-view與網頁互動.

官方api說明文件: https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html


前置物料

  1. 啟動好一個網頁服務. 比如: http://localhost/SimpleThreeJsExample/index-wx.html

步驟

  1. 在Pages下 新建一個 小程式頁面. (四件套)

    • web001.wxml

      <view class="container">
        <
      web-view
      src="{{myWebUrl}}" bindmessage="msgHandler">
      </web-view> </view>
      • myWebUrl: 在程式上動態設定的目的 網頁地址
      • msgHandler: 處理網頁返回的資訊
    • web001.js

      import { gLog } from '../../src/module/log/Logger.js'; // 我自己封裝的日誌
      
      Page({
        data: { // 初始化 web001.wxml 中的初始資料
          myWebUrl: ""
        },
      onLoad: function (options) { gLog("--- web001 onLoad") let toWebArgs = { arg1: "hello", arg2: 1234, } let url = `http://localhost/SimpleThreeJsExample/index-wx.html?arg1=${toWebArgs.arg1}&arg2=${toWebArgs.arg2}` this.setData({ myWebUrl: url }); // 動態設定 url }, /** * 使用者分享時可獲取當前<web-view/>的URL,即在onShareAppMessage回撥中返回webViewUrl引數。 console.log(options.webViewUrl) */
      onShareAppMessage: function (options) { gLog("--- web001 onShareAppMessage, options:", options) }, // 網頁向小程式 postMessage 時,會在特定時機(小程式後退、元件銷燬、分享)觸發並收到訊息。e.detail = { data } msgHandler: function(args) { // gLog("--- web001 msgHandler", args) gLog("--- web001 msgHandler", args.detail) }, })
  2. 網頁 index-wx.html 引入 jweixin-1.3.2.js.

    hello world
    <!-- for 微信小程式 web-view -->
    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
    <script type="text/javascript" src="asset/js/wx/wx-logic.js"></script> <!-- 自定義邏輯程式碼 -->
    
    • wx-logic.js. 邏輯程式碼都丟到裡面.

      console.log("--- wx-logic ok")
      
      document.querySelector('#redirect').addEventListener('click', () => {
      	wx.miniProgram.redirectTo({ // 呼叫小程式api
      		url: '../index/index'
      	  })
      	// wx.miniProgram.navigateBack({
      	// 	delta: 1
      	// })
      }, false);
      
      // 獲取網路引數
      function GetRequest() { 
      	var url = location.search; //獲取url中"?"符後的字串 
      	var theRequest = new Object(); 
      	if (url.indexOf("?") != -1) {
      		var str = url.substr(1); 
      		strs = str.split("&"); 
      		for(var i = 0; i < strs.length; i ++) {
      			theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); 
      		} 
      	} 
      	return theRequest; 
      } 
       
      var args = GetRequest(); 
      console.log("--- args", args)
      
      args.webData = "world" // 隨便增加點web的資料
      // 向小程式傳送資訊
      wx.miniProgram.getEnv(function (res) {
      	console.log(res.miniprogram) // true
      	if (res.miniprogram) {
      		wx.miniProgram.postMessage({ data: args, args: args })
      		console.log("asdasdasd")
      	} else {
      		console.log("just support wx")
      	}
      })
      
      // TODO: 直接顯示模型
      const threeHelper22 = new ThreeHelper();
      threeHelper22.loadObject('asset/model/aaa002.fbx');
      
  3. 測試.

    • 內網測試. 在小程式工具中 需要勾選 不校驗 業務域名 驗證

    • 外網: TODO:

    • 執行


參考


ps

  • 小程式中暫時不能輸出 網頁端 的log.(知道麻煩告訴我一下下)