-1.IE9下antd
按需引入会导致部分样式丢失,原因是IE9下样式表( @import
<link />
<style />
)最多可以有31个,多于这个数目的样式表会被忽略。antd
按需引入是通过js动态将每个引入的antd
组件的样式插入到<style></style>
标签内容里,每个antd组件样式都会有一个<style>
。如果项目中用到多个组件导致样式表超过31个,就会导致超出的antd
组件样式丢失,所以就不能按需引入antd
样式。
['import', { libraryName: 'antd', style:'css' }], //style值为true会按需引入,这里改为css。
注:antd样式全部引入后,要对样式文件进行分割多份。IE9下加载css文件的前提是该css文件内的样式规则不超过4095个,超过4095就不会加载,所以要在webpack plugins那里配置如下插件,这样打包时会将超过4095个样式规则进行分割成多份css文件。
plugins:[
...,
new CSSSplitWebpackPlugin({ size: 4000, filename:'static/css/[name]-[part].[ext]'}),
]
0.IE9下有bind
方法,依然会报错:对象不支持bind
属性和方法(打开开发者工具的情况下页面会报错,不打开页面就没问题)
,查看原因是1.16.2
版本的react-intl-universal
依赖导致的,报错代码路径:/node_modules/react-intl-universal/lib/index.js
错误位置:warningHandler: console.warn.bind(console)
解决方案:升级依赖版本到2.2.5
(不要用最新版本2.4.8
,升级到最新版本后,它的依赖intl-messageformat@7.x
版本会报新的语法错误)
最新发现:升级到2.2.5版本后打开日志后可能会报apply不是方法或者属性
的问题,原因是找不到对应语言包导致该依赖会打印警告日志,导致IE9执行console.warn.apply会报错导致。
1.display : flex
不可用,可用dispaly : table
代替,子元素display : table-cel
,配合vertical-align
居中
2.transfrom
不可用,需要加前缀:-ms-
3.上传接口响应类型content-type
应为text/html
,如果为appliation/json
会提示是否下载保存响应的数据。这里要后端根据请求头字段User-Agent
判断浏览器类型返回content-type
,而前端则要判断返回的数据是否为字符串,如果是,要JSON.parse
。
-
antd upload
组件上传失败后叶密爱你依然会展示上传的文件,解决:fileList
受控,失败时this.setState({fileList:[]})
5.输入框后缀出现叉号,解决方案:input::-ms-clear { display: none; }
(仿真模式下不起作用,真实环境下才会有效)
7.绑定了message事件,即使嵌入的iframe没有执行postMessage,也会一直触发message事件。
-
antd Dropdown
组件设置了getPopupContainer
后,会导致Menu
菜单项无法点击