说到兼容ie,真是跟ie浏览器斗争到底呀,真的是不喜欢用ie浏览器,chrome多好。辛酸,可是也不能不去解决它!出现问题如下:当发送后台请求时,
ie控制台报错
问题1.Unhandled promise rejection NavigationDuplicated
问题2.unhandled promise rejection error:Request failed with status code 400(人家chrome浏览器可没这么多问题)
解决方法:
问题1解决方法:在路由配置文件中加入:
const originalPush = Router.prototype.push;
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err);
};
问题2解决方法:百度解决中。。。提示说是由于代码中没有catch错误,乖乖加上catch
再次试着发送请求,catch中的error被打印出来,可是还是找不到问题的错误点啊。
完全没头绪,还好冷静下来比对了下出现这种情况的请求类型。发现当url当中含有中文才会出现这个问题。
相同请求,在chrome和ie浏览器开发者工具network中比对如下:
1、ie11浏览器中:
2、chrome浏览器中:
对比发现出现该问题的原因:ie中url 是不支持中文,需要将中文转码,具体方式为对encodeURI(url)
再次发送请求,数据显示正常,ie开发者工具network中URL显示和chrome中显示一致。
参考文章:
Uncaught (in promise) NavigationDuplicated {_name: "NavigationDuplicated"}的解决方法