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