终于将 Ant Design Pro 兼容到 IE 9 了,一个星期了,脑壳疼。。。

2019-10-09 16:22:16 +08:00
 nnnToTnnn

忙活了一个星期各种 polyfill,无奈最后还是放弃了 flex 布局。重写兼容的 css

话说 flexbox 的 polyfill 有那些对 umi 支持高的?

一句话,不要用 IE,你好我好大家都好。 头疼,脑壳疼

9560 次点击
所在节点    程序员
36 条回复
caola
2019-10-09 19:22:57 +08:00
幸好我自己的项目,只考虑兼容 chrome latest 一个版本而已,
其它的兼容不兼容从来不考虑……
asdjgfr
2019-10-09 19:23:44 +08:00
@coolzilj 把提示改成推荐使用 360 浏览器,QQ 浏览器,UC 浏览器等国产浏览器
rupert
2019-10-09 19:50:51 +08:00
@coolzilj IE 不也是美国的?
azh7138m
2019-10-09 19:53:18 +08:00
gdrk
2019-10-10 09:32:48 +08:00
NB !党和人名不会忘记你的
nnnToTnnn
2019-10-10 10:11:08 +08:00
@devqin
@shintendo
@murmur
@asdjgfr
@gdrk


对于 IE8 以下或者 IE8 是采用提示用户更新浏览器的策略。

然后采用 babel+postcss+browserslist 的方案进行兼容,但是由于 umi 的兼容性问题,导致在 IE10 的时候会异常

可以在官网上打开 https://preview.pro.ant.design/ 的时候就可以发现

Ant Design Pro 无法兼容 IE9 & IE 10 的原因是因为

原因一

因为 dynamicImport 导致在进行 Promise 的时候出现兼容问题

+ https://github.com/umijs/umi/issues/2391

> 解决方式就是简单的不使用 dynamicImport

原因二

在 IE 中没有正确的使用 babel 编译三方依赖

+ https://github.com/sorrycc/blog/issues/68

原因三

缺少 requestAnimationFrame 的 polyfill

原因四

缺少 flex 的 polyfill


一,二,三的原因很好解决,改下 config.js 的配置或引入 requestAnimationFrame 的 polyfill

目前四的原因不太好解决尝试过 flex polyfill,会导致布局出现过多的空白,和之前布局不一样


四的最终解决方案是

写 css 样式兼容 ie 的 flex,大概也就 20 几行 css 样式,代码中调整不要使用 flex 布局,采用 antd 的 Col 和 Row
nnnToTnnn
2019-10-10 10:13:02 +08:00
这些事情总结起来很简单,就四个因素,结果找了一个多星期,人都要崩溃了。。。。
nnnToTnnn
2019-10-10 10:15:37 +08:00
@nnnToTnnn 至于无法兼容到 IE8 的原因是因为 antd 部分组件采用 flex 布局,而在 ie8 是彻底不支持 flex,所以

antd 支持 ie9+
antd pro 支持 ie11+

最后 antd pro 也只能支持到 ie9
shintendo
2019-10-10 10:17:42 +08:00
@nnnToTnnn 很好奇 flex 的 polyfill 是什么原理,感觉超越了我的认知……
nnnToTnnn
2019-10-10 10:21:19 +08:00
@shintendo 通过 js 修正 css 的错乱,也就是遍历 DOM 的样式。

例如

+ https://github.com/jonathantneal/flexibility
nnnToTnnn
2019-10-10 10:22:30 +08:00
@shintendo 利用 postcss + flexibility 就可以填充 polyfill,尝试过,感觉效果不理想。
nnnToTnnn
2019-10-10 10:25:25 +08:00
@shintendo 解决了一部分 issues 中提到的问题,但是发现在这样下去就是自己单独走一条路出来了,所以开始修改 css 兼容 flex 说白了就是调整项目代码,来兼容 ie
miloooz
2019-10-10 15:20:17 +08:00
老哥的版本是 ant design pro 4.0 吗?搞了几天都搞不定 ie 兼容 ie11 都打不开页面
,看是 webpack-theme-color-replacer 包里报的错,和你的原因二有点类似,试着和那个一样的去解决,就可以了
就是又跳出一个语法错误的报错,让人头秃
nnnToTnnn
2019-10-10 16:53:45 +08:00
@zmlq7 是的,有点头疼,这个要一遍一遍的排查
lifesimple
2020-08-18 10:15:34 +08:00
终于轮到我来兼容 IE8 头大
nnnToTnnn
2020-08-18 10:54:44 +08:00
@lifesimple 兄弟, 如果是兼容 IE8, 真的,这条路算你自己一个人走了,以后维护成本非常高的。 现在我已经说服他们,使用 360 急速浏览器了。 兼容 IE9 后面很多特性不支持。相当麻烦的,兼容 IE8 更加麻烦。 建议你说服一下领导采用其他浏览器

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607497

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX