微信小程序的 web-view

昨天(20171102)小程序开发团队又失去了夜生活,
发布了振奋人心的新功能,小程序内打开网页
老大们激动得像个两百斤的孩子,一波唱衰 APP 的浪潮怕是又要沸腾吧。

无论是不是公司要求,这种骚操作必然是需要体验一下的。
再者如果能利用这个新功能实现热更新,省去频繁提交小程序审核的麻烦也是不错的。
所以进行了一次公司官网(包含案例库)的小程序化搬迁,主要罗列一下我的流程和坑眼。

绑定公众号

官方表示:个人类型与海外类型的小程序暂不支持使用
意味着你绑定的公众号需要公司认证。
否则会报错 {"base_resp":{"ret":-1}},绑了 AppID 有公众号信息,没绑就没有。

注:记得将基础库版本改为 1.6.4 以上哟。

设置域名白名单

在有公司认证的小程序管理后台中,找到 设置 -> 开发设置 -> 业务域名
然后就可以添加了,只是有些次数限制,问题不大。
1)每个小程序帐号仅支持配置最多20个域名;
2)每个域名仅支持绑定最多20个小程序;
3)每个小程序一年内最多支持修改域名50次。

访问非白名单域名下的资源或接口,会报 {"base_resp":{"ret":-1}} 错误。

在论坛中看到一些配置文件错误的问题,很偶现,重复操作几次吧。

有大神发现一个应该算是 bug 的情况,
在网页内写 iframe 然后链跨域网页竟然是可行的。
比如以往微信不能打开的淘宝网在非 ios 的小程序中可以被打开。
当 iframe 的链接为非 https 时不会报错,会不显示。

非常重要的 https

网页本身网页内接口页面内跳转的链接
以上三者(划重点)都需要 https,且满足域名白名单,
否则也会报 {"base_resp":{"ret":-1}} 错误。

图片等资源的链接和 iframe 一样有些特别,非 https 非白名单也可以显示,不知以后会不会修正这个。

web-view 元素

单个页面中只会有一个 web-view,以先写的显示。

本页不管写了什么内容,web-view 都将全屏,即使有底部菜单。
且层级超高,高过了 canvas 等原生组件。
但比 js 操作的 wx.showLoading 等产生的覆盖要低。

再者,它是设不了样式的,用 boundingClientRect 也得不到宽高,虽然没人会这样搞。

小程序的缓存

如果小程序没有改动,只改动了网页,可能小程序会一直访问未改动前的网页。
所以在网页链接加上一个随机的 search 字符串,可以避免这种问题。

<web-view src="https://xx.com#wechat_redirect?temp={{webId}}"></web-view>

onReady: function() {
    this.setData({ webId: Math.random().toString(36).substring(2, 7) });
}

跳转后的网页也会被缓存,这其实就很尴尬了,我也没想到什么比较简单的解决方案。

苹果机无法访问

按照官方文档,需要再 web-view 的链接中加上 #wechat_redirect

注:hash 要放在 search 前面哟,不然会不显示。这个 HTML 的 hash 规则有点不一样。

小程序跳转

在网页内想改变小程序的链接,是可以的。
现在只开放了 wx.miniProgram.navigateTowx.miniProgram.navigateBack 两个。

wx.miniProgram.navigateTo({ url: '/pages/index/index' });

注: 网页中需要引入 <script src="https://res.wx.qq.com/open/js/jweixin-1.3.0.js"></script>

想想都有点小激动,往后有望使用 wx.miniProgram 让网页就有现在小程序的 API 功能,也就是快捷开发混合应用(当然网页还是得在微信内部,但如果我们假设,以后所有的浏览器都是小程序浏览器呢)

JSSDK

但 wx.miniProgram 并没有开放那么多功能,所以原本 JSSDK 的那套要更佳。

原本的那套嘛,可以单独写新的文章了,还是先看 JS-SDK说明文档 吧,以后我会补一篇。

然而,小程序内网页的 JSSDK 还是有丢丢限制的,
没有分享,支付,界面操作(比如隐藏右上角菜单)。

支付嘛,你觉得可以先 wx.miniProgram.navigateTo 到小程序中,完成了再跳回网页来。

用户授权与身份获取

以前网页直接能进行授权申请,但现在多了个小程序在中间,
等于我得先小程序获得授权拿到身份,再传给网页。
由于我司在这方面可能会带来较大改动,所以有丢丢怀疑这样是否正确,希望大佬们指点。

这方面微信那边应该也会有所调整,期待更新。

小程序的用户授权嘛,主要要用 wx.login 和 wx.getUserInfo 这两个方法,
后端所需要的加密解密什么的我就不知道了,可见 官方文档
需要的话,可以看看之前项目中实践过的前端 代码

其他

尚未测试的一些方面:

  • 请求头的 cookie 是否相同,以处理小程序获得授权是否网页也就有了授权。
  • localStorage 能否通用(已测,不能,所以又得考虑数据较大时两者的沟通了)

此功能带来的改变:

  • 以前为了弥补小程序入口问题(如朋友圈或推文里的阅读原文),会做网页与小程序分别的两套,现在只需要一套网页版的了
  • 例如官网、资讯类等现有网页,转为小程序版非常方便,可以多一个小程序列表的入口
  • 网页版也算弥补了交互式 canvas 和超多动画项目的小程序性能不佳的问题吧
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容

  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 13,444评论 0 3
  • 小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。同时...
    极乐叔阅读 21,995评论 0 7
  • 那晚何白组织了一场夜宵,还未下课就早早跟黎明跑去食堂。在她的威逼利诱下,我不得不答应帮她把书包带过去。她的书包质料...
    EasyLau阅读 191评论 0 0
  • 你心中的荒凉与无奈唯有你自己清楚,也许你曾经幻想会有人来帮助你,帮助你翻过这座大山,就想你当年觉得总有一个万能...
    梦泽君阅读 375评论 0 1
  • 心灵写作第八期第18篇 挂上电话,我的心扑通扑通直跳,有点恍惚。我妈妈在我身边兴奋地拥抱我,热情地呼喊:哦哦哦哦!...
    花生果果阅读 358评论 0 1