Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何解决小程序的兼容性问题?

如何解决小程序的兼容性问题?

作者头像
知晓君
发布于 2018-06-28 09:47:09
发布于 2018-06-28 09:47:09
1.2K00
代码可运行
举报
文章被收录于专栏:知晓程序知晓程序
运行总次数:0
代码可运行

文 | kamidox

微信小程序发布有一段时间了,但目前小程序的兼容性问题,特别是 Android 平台兼容性问题,特别严重。据我观察,好多小程序都曾踩过兼容性的坑。

掉坑里不要紧,更让人捉急的是,微信审核人员打回了紧急修复兼容性的版本。这就好比从坑里爬上来的时候,手刚抓到坑沿,又被微信官方踩到,再次跌落坑底。

这下,就只能眼睁睁地看着后台用户在破口大骂:「什么东西都没有啊,什么破小程序」。

微信小程序的兼容性问题除了微信本身的 Bug 外,大部分是目标平台对 JavaScript 标准库支持程度不同造成的。

微信本身引起的 Bug

微信本身的 Bug 引发的兼容性问题有个现成的例子,就是 wx.request() 返回的状态码 res.statusCode 的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。

如果你判断服务器的返回状态码方法不当,可能就踩到坑里了。

上述代码就踩坑了。在判断状态码时,正确的做法是使用 == 而不是使用 === 来判断。另外一个更规范的方法是使用 parseInt(res.statusCode) === 200 来实现。

JavaScript 标准库兼容性问题

比如 Array.find() 方法在 iOS 10.2 / Android 7.0 上完美支持,但在 Android 6.0.1 上却不支持。如果代码里用到了这个接口,就会导致在 Android 6.0.1 上无法正常工作。

通过对比发现,这类接口不支持的个数还是比较多的。特别是 Android 平台版本众多,兼容性问题就更严重,可能一不小小心就掉到坑里。

如何避开这些坑?

微信本身 Bug 只能绕过去,但对 JavaScript 引擎的兼容性,我们有更优雅的解决方法。比如,我们可以打补丁,使用 Polyfill 来实现这些不支持的标准库方法。

比如,修复 Android 6.0.1 平台不支持 String.startsWith() 的问题,可以使用下面的 Polyfill 代码:

推而广之,我们可以把平台不支持的标准库方法,使用 Polyfill 实现。因此,我开发了 minapp-polyfill 这个项目。

使用方法很简单,把 minapp-polyfill 项目里的 polyfill.js 拷贝到小程序源码目录下,然后在需要打补丁的 JavaScript 源文件头部引入如下代码即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'path/to/polyfill.js'

目前这个项目只是搭了个骨架,还有很多方法需要实现。PRs is welcome。

原文地址: http://www.jianshu.com/p/90220a55f542

minapp-polyfill 项目地址: https://github.com/kamidox/minapp-polyfill

本文由知晓程序授权转载,关注微信号 zxcx0101,回复「1228」获得全网第一本《小程序入门指南》电子书。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知晓程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序兼容性问题。
在Andriod使用new Date(“2018-05-30 00:00:00”)木有问题,但是在ios下面识别不出来。
用户4344670
2019/11/05
1.1K0
DOM、BOM一些兼容性问题
汇集了许多关于DOM和BOM的兼容性问题,主要是关于 IE 浏览器的,考虑到浏览器迭代,这里主要列出了 IE8 以及之后的浏览器版本。 IE8 浏览器在 2008年推出,距现在(2019)已有11年之久,已经是很老的一款浏览器了。但是在一些项目中,可能仍需要考虑到兼容性,如果兼容到 IE8 已经是很兼容了,毕竟该浏览器也几乎没多少市场份额了。多是一些机构或政府部门在使用。而有些兼容性问题也可能是其它浏览器之间的差异,比如 Chrome 和 FireFox 对于鼠标滚轮事件对象的滚轮方向判断方式不同,Chrome使用 wheelDelta,而FireFox 则采用 detail 做判断。下面将一一说明或做补充实现来尽量弥补浏览器之间的差异。其实大部分就是为了兼容 IE 早期浏览器。
多云转晴
2019/10/23
1.6K0
DOM、BOM一些兼容性问题
小程序无法联网,发生什么事了?| 小程序问答 #6
这里是「小程序问答」栏目的第 6 期 本周,斗图必备的「鬼畜表情包」小程序获得了知晓程序 · MINA 奖。本周还有什么新上的小程序值得玩?「晓榜」给大家一口气推荐了 10 个。 回到本期的「小程序问答」,我们解答了以下两个重要问题: 1. 我在用小程序的时候,出现了无法载入的情况,页面一片空白,这是怎么回事? 最近,知晓程序收到了非常多的类似疑问,问题基本上是「为什么这个小程序无法载入、一片空白?」 我们发现,出现该问题的用户,使用的都是 Android 系统。 经过推测,这也许是小程序的网络接口在 An
知晓君
2018/06/29
1.1K0
自动化兼容性检查和解决方案:应用不会再白屏了
对于前端开发者来说,caniuse网站是一个非常有用的工具,它可以帮助我们查询JavaScript API在不同浏览器版本中的兼容性情况。以fetch为例,我们可以在网站上查到其兼容性如下图所示:
linwu
2023/08/08
1K0
自动化兼容性检查和解决方案:应用不会再白屏了
小程序测试之路_心得和坑儿
解决办法 测试过程中可以将测试人员测试帐号开启开发者模式,这样就可以使用Debug模式进行测试了,如图
用户5521279
2019/06/18
8040
小程序测试之路_心得和坑儿
对于使用 C 语言开发的跨平台应用,如何解决不同操作系统和硬件架构带来的底层差异和兼容性问题?
在使用C语言开发跨平台应用时,可以采取以下方法来解决不同操作系统和硬件架构带来的底层差异和兼容性问题:
程序员阿伟
2024/12/09
1810
CSS常见兼容性问题总结
浏览器的兼容性问题,通常是因为不同的浏览器对同一段代码有不同的解析,造成页面显示不统一的情况。
书童小二
2018/09/03
1.2K0
CSS常见兼容性问题总结
当需要在不同操作系统和编程语言环境中共享和处理 XML 数据时,可能会遇到哪些兼容性问题,以及如何解决?
在不同操作系统和编程语言环境中共享和处理 XML 数据时,可能会遇到以下兼容性问题:
程序员阿伟
2024/12/09
1310
常见的兼容性问题解决「建议收藏」
所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。
全栈程序员站长
2022/09/20
1.2K0
【CSS】处理兼容性问题 | CSS Hack | IE
(1)IE6双边距bug: 块属性标签添加了浮动float之后,若在浮动方向上也有margin值,则margin值会加倍。这种问题主要就是会把某些元素挤到了第二行。
前端修罗场
2023/10/07
2850
Edge浏览器兼容性问题如何修复,这篇文章告诉你
现在使用Edge浏览器的人越来越多,我们在使用edge浏览器时也可能会遇到这样那样的问题,其中我们就有可能会遇到兼容性的问题,如下图:
霍格沃兹测试开发Muller老师
2024/04/09
9450
4种方案解决CSS浏览器兼容性问题
前端是一个苦逼的职业,不仅因为技术更新快,而且要会的东西实在太多了,更让人头疼的是,还要面临各种适配、兼容性问题。
Javanx
2019/09/04
2.9K0
4种方案解决CSS浏览器兼容性问题
用属性选择符来解决IE跟FF的兼容性问题
从之前写过的《属性选择符的使用》中发现了一个可以用来解决IE跟FF兼容性的问题,因为IE不支持CSS的属性选择符。下面来看看可以怎么做:
GhostZhang
2022/08/22
3670
用属性选择符来解决IE跟FF的兼容性问题
兼容性测试的正确打开方式
前几天在我创建的技术交流群,几位同学聊起了兼容性测试相关的话题。有测试的方法技巧,有如何选择测试时的切入点,也有在质量和投入成本之间如何做平衡的思考。
老_张
2023/08/09
4260
兼容性测试的正确打开方式
小程序·云开发:新手常见问题全解答
小程序·云开发 文档里,则是所有与小程序·云开发相关的文档内容。下面会通过用户关心的的一些问题,介绍在哪里可以找到对应的文档。
李成熙heyli
2018/11/15
5.6K7
小程序·云开发:新手常见问题全解答
小程序测试兼容性测试
在这里我并不会提供了一个列表出来给你,我主要还是想分享小程序的运行环境对兼容性的一些影响。
苦叶子
2019/08/29
6.4K0
怎样解决 Bash 与其他编程语言交互时出现的兼容性问题?
通过以上方法,你可以更好地解决Bash与其他编程语言交互时的兼容性问题,并确保你的代码能够在不同环境中正常运行。
程序员阿伟
2024/12/09
1020
最近遇到的兼容性问题和适配问题
JS: IE: 1、不能添加监听标准事件,添加polyfill initEvent: function initEvent(dom, eventName, callback) { if (!dom || !eventName || !callback) return; if (document.addEventListener) { // 一般浏览器 dom.addEventListener(eventName, callback, false);
SmileSmith
2018/04/16
1.7K0
前端工程化:你所需要知道的最新的babel兼容性实现方案
core-js[1]是JavaScript的模块化标准库,包括了ECMAScript到2021年的新api的向后兼容实现。它和babel高度集成,是babel解决新特性在浏览器中兼容问题的核心依赖。
coder_koala
2021/08/26
1.2K0
数据万象AVIF图片压缩 - 小程序省流量利器
微信小程序因其便捷的开发环境和天然的微信生态,使得越来越多企业平台通过小程序建立自己的业务。在小程序上使用图片非常广泛,但传统格式图片(如 JPG/PNG)占用空间大,加载速度慢,可能导致昂贵的图片流量支出。近年来,AVIF 图片以高压缩率、优良画质成为省流量的新选择。本文将介绍如何通过数据万象(CI,Cloud Infinite)的图片压缩能力,解决使用 AVIF 图片的疑虑,助力快速升级小程序,节省图片流量。
云存储
2023/07/16
4520
数据万象AVIF图片压缩 - 小程序省流量利器
推荐阅读
相关推荐
微信小程序兼容性问题。
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验