iview admin 是基于 iview 的一套后台管理系统,界面清爽,功能比较完整,很适合快速上手。不过它未兼容IE(非Edge)9/10,而本该可以部分支持的。这里提供一些解决方案。
一、const polyfill
本人是通过vue-cli
初始化工程的,实测发现,编译打包时,/node_modules/iview/src
里的两处const变量为被转换为var,而iview/dist/
里面是正确转换来的。
接着,全部照搬iview admin配置,仍然如此。
发现是webpack
配置问题,解决方案:
在webpack.base.conf.js
的test: /\.js$/
规则里,新增一个include
项,即resolve('/node_modules/iview/src')
。
参考来源:http://blog.csdn.net/nongweiyilady/article/details/78893504
二、Promise polyfill
IE低版本原生不支持Promise,但是transform-runtime
插件,应该是能提供兼容的,结果没有。
这也是webpack配置问题,没有导出全局的Promise对象。解决方法:
在main.js
头部添加一句window.Promise = Promise;
即可。
*注意:*原版是src/vendors/vendors.base.js
文件,我未完全照搬,下同。
参考来源:http://www.cnblogs.com/pheye/p/7659910.html
三、dataset polyfill
admin中直接用到了DOM的dataset属性,也需要向后兼容,解决方法:
添加依赖element-dataset
,导入并初始化即可。
import ElementDataset from 'element-dataset';
ElementDataset();
四、babelrc配置参考
仅供参考,或许能解决某些IE下的奇怪兼容性问题。。。
{
"presets": [
["env", {
"modules": false
}],
"stage-0"
],
"plugins": ["transform-vue-jsx", "transform-runtime"]
}
弃坑
最近验证发现,在IE 11及以下仍然会报错,初步怀疑是webpack版本问题,只能使用2.7.1或更低版本。未降级验证,好在目前没这必要性,不折腾了。让IE低版本早日退出历史舞台吧。