兼容IE浏览器

Posted huihuihero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了兼容IE浏览器相关的知识,希望对你有一定的参考价值。

1、IE浏览器打开网站后显示空白,并报错:Error in created hook: "ReferenceError: “Promise”未定义"

方法:安装相关依赖,将es6语法降至es5供ie浏览器识别
1、安装babel-polyfill依赖:  yarn add babel-polyfill 或 npm install babel-polyfill --save
2、在main.js入口引入:  import 'babel-polyfill'
3、build/webpack.base.conf.js下做以下改动
entry: {
    app: ["babel-polyfill", "./src/main.js"]
},


分析:就是ie内核的报错,首先定位浏览器兼容问题,然后看报错:Error in created hook: "ReferenceError: “Promise”未定义",
也就是说promise回调不支持,promise是es6的特性,也就是说ie内核版本对es6兼容不友好,需要降级才能解析。
至于?babel-polyfill,参考官网  https://babeljs.io/docs/en/6.26.3/babel-polyfill

2、接口数据请求失败

1可能是因为IE不识别es6的promise,解决方法如上。
2也可能是因为简易接口请求格式IE浏览器不识别。换做标准的格式即可
简易格式:
getDemoList(){
    this.$axios.get(`${common.base}/admin/getdemo?page=${this.page}&pagesize=${this.pagesize}`).then(res=>{
        if(res.data.code==200){
            if(res.data.data.list){
                this.demoList=res.data.data.list
            }
        }
    }).catch(err=>{})
}


标准格式: //若开发pc端项目,尽可能使用这种格式请求接口,更加标准,也可以兼容IE浏览器。若觉得麻烦可以封装起来(参考https://www.cnblogs.com/huihuihero/p/10926228.html)
getDemoList(){
    let config={
        method:'GET',
        params:{
            page:this.page,
            pagesize:this.pageSize,
        },
    }
    this.$axios(`${common.base}/admin/getdemo`,config).then(res=>{
        if(res.data.code==200){
            if(res.data.data.list){
                this.demoList=res.data.data.list
            }
        }
    }).catch(err=>{})
},

3、IE浏览器不支持flex布局

以上是关于兼容IE浏览器的主要内容,如果未能解决你的问题,请参考以下文章

十条jQuery代码片段助力Web开发效率提升

十条实用的jQuery代码片段

一条代码解决各种IE浏览器兼容性问题

JS 在IE和火狐的兼容问题

兼容IE6的最小高度代码实例

一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10