微信小程序webview跳轉小程序內路由

微信小程序是一種全新的連接用戶與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。同時提供一系列工具幫助開發者快速接入并完成小程序開發。關于如何注冊配置就不多言了,本文主要還是體驗了下web-view的功能。

web-view詳解

有了這個組件之后,小程序可以很好的嵌入一些頁面,可以環境小程序size告急的問題,同樣也使開發更加便捷,畢竟小程序開發者基本都對前端開發較為了解。

web-view能力

說再多還是需要去看官方文檔,web-view文檔,

兼容

首先就需要注意:兼容問題,版本庫和對應版本比例

基礎庫 1.6.4 開始支持,低版本需做兼容處理,
個人類型與海外類型的小程序暫不支持使用。

目前而言,基本80%的用戶會升級微信,所以其實不必擔心版本問題,官方截止2017-12-01提供的數據也說明88%的用戶支持web-view

使用

web-view 組件是一個可以用來承載網頁的容器,會自動鋪滿整個小程序頁面;

屬性:srcString類型,是一個網站的url,默認值是nonewebview 指向網頁的鏈接。需登錄小程序管理后臺配置域名白名單。

<!-- wxml -->
<!-- 指向微信公眾平臺首頁的web-view -->
<web-view src="https://mp.weixin.qq.com/"></web-view>

可以配合Page實例的onLoad方法來獲取url的具體值,也就是一個微信小程序頁面中只有一個web-view,但是這個web-view的內容可以根據上一個頁面傳遞的參數來獲取頁面URL,后面會講如何實踐,

官方提供如下接口:

  • web-view和小程序的通信

1. 由小程序到web-view,其實本質上WEB-VIEW也是小程序的一個頁面,所以小程序到web-view是正常的小程序間的通信,通過wx.navigateTowx.redirectTo,帶上url參數,query參數就像正常url的參數一樣跟著后面,然后在web-view的頁面的Page實例里面通過onLoad的方法的參數來獲取url的值,設置給web-viewsrc屬性為改值即可。
2. 由web-view到小程序,由于在web-view的跳轉通常是在src對應的網頁中的操作來處理的,所以需要結合jssdk來處理,不需要wx.config配置,直接通過script標簽來引入[https://res.wx.qq.com/open/js/jweixin-1.3.0.js](http://link.zhihu.com/?target=https%3A//res.wx.qq.com/open/js/jweixin-1.3.0.js),就可以使用wx.miniProgram.navigateTowx.miniProgram.navigateBackwx.miniProgram.switchTabwx.miniProgram.reLaunchwx.miniProgram.redirectTo接口,就像小程序之間的跳轉一樣,單是只能在當前小程序頁面內跳轉。

  • 支持以下部分JSSDK接口圖像、音頻、搖一搖、地理位置等信息,具體可以查看web-view文檔,不過這些需要通過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實踐

在目前實踐了部分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"  />
</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的方法,那就需要參照公眾號的開發配置了。

web-view采坑

由于很多使用中的一些問題

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使用了公眾號授權的服務,開發者工具提示網頁開發者的問題,請見:公眾號開發
其他的問題注意:

  1. 每個頁面只能有一個<web-view/>,<web-view/>會自動鋪滿整個頁面,并覆蓋其他組件,小程序對webview的監控狀態基本沒有,只能設置src設置url。
  2. 關于小程序和web-view的通信,<web-view/> → 小程序只能通過JSSDK 1.3.0提供的接口返回小程序頁面,設置參數來傳值,反之,小程序到webview也是一樣的,只能是src的路徑帶上參數;
  3. web-view不支持支付能力,是指無法喚起小程序的直接支付窗口,對于h5的那套支付應該是支持的,但是web-view 里邊沒法使用 微信支付的 JSAPI,也就是可能可以h5的相關的的支付中心來支付;
  4. 關于層級,在webview中可以無限跳轉,對于導航條返回和物理鍵返回都會回到上一個頁面直到退出webview,就像history.back
  5. webview中的html的title會自動放到小程序的頭部作為標題;
  6. webview中可以正常使用ajax之類的操作。
  7. 一些可能的問題問題匯總

作者:caoweiju
原文地址:關于微信小程序webview的使用

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容

  • 小程序 微信小程序是一種全新的連接用戶與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。同時...
    極樂叔閱讀 22,078評論 0 7
  • 前言、背景 本人目前的工作崗位是安卓工程師,在這之前對于前端和后臺的知識基本是白紙,只是在日常的工作項目中有需要和...
    淺默Lynn閱讀 25,226評論 30 27
  • 前言 官方文檔 web-view是小程序提供的一個可以直連h5頁面的組件,只要傳遞一個h5頁面的地址,就可以在小程...
    ITgecko閱讀 50,110評論 3 35
  • 因新工作主要負責微信小程序這一塊,最近的重心就移到這一塊,該博客是對微信小程序整體的整理歸納以及標明一些細節點,初...
    majun00閱讀 7,379評論 0 9
  • 文/圖:櫻子 夜深燈寂 一只蟋蟀藏在屋子的角落里 吟唱著秋天 茉莉花在陽臺 兀自散發著 淡淡的清香 我坐在滇紅的醇...
    雁蕩晨鐘閱讀 570評論 8 14