1. 程式人生 > >微信小程式:web-view開發實踐

微信小程式:web-view開發實踐

使用該元件有個先決條件,就是得到小程式公眾平臺設定網頁的域名白名單,具體做法請自行登入檢視。

然後在小程式寫入如下測試頁::
test.js::

onLoad: function (options) {
    this.setData({
      url: 'https://你的域名/test.html?rnd=' + new Date().getTime()
    })
  }

test.wxml::

<web-view src="{{url}}"></web-view>

test.html::

<!DOCTYPE html>
<html
lang="en">
<head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>test web-view </title> <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"
>
</script> <script> window.onload=function(){ var xhr = new XMLHttpRequest(); xhr.open("GET", '/getConfigData.htm?wxShareUrl=' + encodeURIComponent(location.href.toString()) + '&randomStr=' + new Date().getTime()); xhr.send(); xhr.onreadystatechange = function
() {
if ((xhr.readyState == 4) && (xhr.status == 200)) { var data = JSON.parse(xhr.response); if (data.status) { var item = data.data; wx.config({ debug: true, // 開啟除錯模式 appId: item.appId, // 必填,公眾號的唯一標識 timestamp: item.timestamp, // 必填,生成簽名的時間戳 nonceStr: item.nonceStr, // 必填,生成簽名的隨機串 signature: item.signature,// 必填,簽名,見附錄1 jsApiList: item.jsApiList // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2 }); var shareObj = item.shareObj; wx.ready(function () { console.log(window.__wxjs_environment === 'miniprogram') // true document.getElementById('div').innerHTML+=(window.__wxjs_environment).toString(); }); } } }; // web-view下的頁面內 //wx.ready(function() { //console.log(window.__wxjs_environment === 'miniprogram') // true //document.getElementById('div').innerHTML+=(window.__wxjs_environment).toString(); //}) }
</script> </head> <!--_--> <body id="app"> <div id="div"> 小程式環境:: </div> </body> </html>

然後將test.html上傳到指定的域名目錄下進行測試。測試結果如下:
使用wx.config配置測試
真機除錯
使用wx.config配置測試:開發者工具和真機上的除錯

未使用wx.config配置測試
真機除錯
未使用wx.config配置測試:開發者工具和真機上的除錯

反覆比對測試發現,發現一定要使用通過config介面注入許可權驗證配置。也就是說要安裝使用weixin-js-sdk的步驟來使用的。如果僅僅單獨使用wx.ready是檢測不到小程式環境的。還有發現即使wx.config配置不成功也可以正常檢測,我在簽名錯誤的前提下仍然能檢測到環境標示。但是一定得有這個配置

然後,如果你是使用vue開發的專案,目前npm提供的weixin-js-sdk包版本是1.2.0,因此只能使用index.html全域性引入weixin-js-sdk檔案。

PS:今天我重新登入公眾平臺檢視,我記得之前設定的是二級域名的白名單的,今天竟然自動變成一級域名了。【百思不得其解…】