微信小程序是一種全新的鏈接用戶與服務的方式,它能夠在微信內被便捷地獲取和傳播,同時具備出色的使用體驗。同時提供一系列工具幫助開發者快速接入並完成小程序開發。關於如何註冊配置就很少言了,本文主要仍是體驗了下web-view
的功能。css
有了這個組件以後,小程序能夠很好的嵌入一些頁面,能夠環境小程序size
告急的問題,一樣也使開發更加便捷,畢竟小程序開發者基本都對前端開發較爲了解。html
說再多仍是須要去看官方文檔,web-view文檔,前端
首先就須要注意:兼容問題,版本庫和對應版本比例jquery
基礎庫 1.6.4 開始支持,低版本需作兼容處理,
我的類型與海外類型的小程序暫不支持使用。web
目前而言,基本80%
的用戶會升級微信,因此其實沒必要擔憂版本問題,官方截止2017-12-01
提供的數據也說明88%
的用戶支持web-view
。ajax
web-view
組件是一個能夠用來承載網頁的容器,會自動鋪滿整個小程序頁面;小程序
屬性:src
是String
類型,是一個網站的url
,默認值是none
,webview
指向網頁的連接。需登陸小程序管理後臺配置域名白名單。微信小程序
<!-- wxml --> <!-- 指向微信公衆平臺首頁的web-view --> <web-view src="https://mp.weixin.qq.com/"></web-view>
能夠配合Page
實例的onLoad
方法來獲取url
的具體值,也就是一個微信小程序頁面中只有一個web-view
,可是這個web-view
的內容能夠根據上一個頁面傳遞的參數來獲取頁面URL
,後面會講如何實踐,瀏覽器
官方提供以下接口:服務器
web-view
和小程序的通訊
web-view
,其實本質上WEB-VIEW
也是小程序的一個頁面,因此小程序到web-view
是正常的小程序間的通訊,經過wx.navigateTo
、wx.redirectTo
,帶上url
參數,query
參數就像正常url
的參數同樣跟着後面,而後在web-view
的頁面的Page
實例裏面經過onLoad
的方法的參數來獲取url
的值,設置給web-view
的src
屬性爲改值便可。web-view
到小程序,因爲在web-view
的跳轉一般是在src
對應的網頁中的操做來處理的,因此須要結合jssdk
來處理,不須要wx.config
配置,直接經過script
標籤來引入https://res.wx.qq.com/open/js/jweixin-1.3.0.js
,就可使用wx.miniProgram.navigateTo
、wx.miniProgram.navigateBack
、wx.miniProgram.switchTab
、wx.miniProgram.reLaunch
、wx.miniProgram.redirectTo
接口,就像小程序之間的跳轉同樣,單是隻能在當前小程序頁面內跳轉。wx.config
來受權,就和服務號開發相似。用戶分享時可獲取當前<web-view/>
的URL
,即在onShareAppMessage
回調中返回webViewUrl參數。
Page({ onShareAppMessage(options) { console.log(options.webViewUrl) } })
在網頁內可經過window.__wxjs_environment變量判斷是否在小程序環境。
// web-view下的頁面內 console.log(window.__wxjs_environment === 'miniprogram') // true
在目前實踐了部分web-view
的功能,
//index.js Page({ data: { url: 'https://test.com' }, onLoad: function(options){ options.url ? this.setData({url: options.url}) : wx.navigateBack({delta: 2}); } }); //index.wxml <web-view src="{{url}}"></web-view>
在這個web-view
中,指向的就是https://test.com
的內容,因此在在https://test.com
中跳轉出回到小程序,須要修改https://test.com
中的JavaScript
,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>test</title> <link rel="stylesheet" href="https://test.com/index.css" /> </head> <body> <div class="app"> <h1>webview-wechat-detail</h1> <p> detail </p> <button type="button" id="btn">返回小程序</button> </div> <script src="https://test.com/jquery.js"></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script> <script> /* eslint-disable */ $(function(){ doucument.cookie = 'bb=bbbbbb'; $('#btn').on('click',function(s) { document.cookie = 'aa=ssssss'; wx.miniProgram.navigateTo({ url:'/pages/index?test=testtest', success: function(){ console.log('success') }, fail: function(){ console.log('fail'); }, complete:function(){ console.log('complete'); } }); }); }); </script> </body> </html>
若是須要使用一些其餘的的jssdk
的方法,那就須要參照公衆號的開發配置了。
因爲不少使用中的一些問題
1.打開的域名沒有在小程序管理後臺設置業務域名(注意是業務域名,不是服務器域名)
2.打開的頁面必須爲https服務
3.打開的頁面302過去的地址也必須設置過業務域名
4.web-view空白問題,請升級微信客戶端到 6.5.16
5.頁面能夠包含iframe,可是iframe的地址必須爲業務域名
6.web-view不支持支付能力,web-view的API能力見web-view的文檔說明
7.開發者本身檢查本身的https服務是否正常,測試方法:普通瀏覽器打開對應的地址
8.若是web-view使用了公衆號受權的服務,開發者工具提示網頁開發者的問題,請見:公衆號開發
其餘的問題注意:
history.back
。