关于微信小程序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标签来引入[res.wx.qq.com/open/js/j](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" 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的方法,那就需要参照公众号的开发配置了。

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阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容