说到兼容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"}的解决方法

Unhandled promise rejection --解决办法

IE中ajax或者跳转url中带中文参数的坑

Logo

前往低代码交流专区

更多推荐