微信小程式:web-view開發實踐
阿新 • • 發佈:2019-01-08
使用該元件有個先決條件,就是得到小程式公眾平臺設定網頁的域名白名單,具體做法請自行登入檢視。
然後在小程式寫入如下測試頁::
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配置測試:開發者工具和真機上的除錯
反覆比對測試發現,發現一定要使用通過config介面注入許可權驗證配置。也就是說要安裝使用weixin-js-sdk的步驟來使用的。如果僅僅單獨使用wx.ready是檢測不到小程式環境的。還有發現即使wx.config配置不成功也可以正常檢測,我在簽名錯誤的前提下仍然能檢測到環境標示。但是一定得有這個配置
然後,如果你是使用vue開發的專案,目前npm提供的weixin-js-sdk包版本是1.2.0,因此只能使用index.html全域性引入weixin-js-sdk檔案。
PS:今天我重新登入公眾平臺檢視,我記得之前設定的是二級域名的白名單的,今天竟然自動變成一級域名了。【百思不得其解…】