vue填坑之解決部分瀏覽器不支援pushState方法
前端使用vue-router做單頁面路由並開啟history模式時,會碰到一個問題:部分低版本的手機瀏覽器、部分app以及IE9瀏覽器由於不支援pushState方法,會導致頁面載入不出來。
解決這個問題的思路是:
1. 當瀏覽器支援pushState方法時,開啟history模式,不支援則開啟hash模式
2. 對連結做判斷,當跳轉的連結與路由模式不匹配時,則跳轉至正確的連結
3. nginx對域名下的路徑訪問均重寫向至index.html
以下為具體實現方法:
判斷使用何種路由模式
let isHans = typeof (history.pushState) === 'function';
let mode = isHans?'history':'hash';
判斷請求連結
每次進入路由時,判斷請求連結跳轉的連結與路由模式不匹配時,則跳轉至正確的連結
router.beforeEach(async (to, from, next) => {
let toPath = to.fullPath,host = 'http://abc.cn';
let url = host + toPath;
let reUrl = url;
if(isHans && url.indexOf(`${host}/#/`) >-1){
reUrl = url.replace(`${host}/#/`,`${host}/car-insurance/`);
}
if(!isHans && url.indexOf(`${host}/#/`) === -1){
reUrl = url.replace(`${host}/car-insurance/`,`${host}/#/`);
reUrl = reUrl.replace(`${host}/`,`${host}/#/`);
}
if(reUrl !== url){
window.location.replace(reUrl);
return
}
配置nginx
server {
listen 80;
listen 443;
server_name abc.cn;
root /data/html;
index index.html index.htm index.json;
access_log off ;
set $isIndex 1;
##判斷IE6-8
if ($http_user_agent ~* "MSIE [6-8].[0-9]") {
rewrite .* /static/ie8.html break;
}
if ( $request_uri ~* "/(favicon.ico|index.js|root.txt|jd_root.txt)$" ) {
#不跳轉到index.html
set $isIndex 0;
}
if ( $request_uri ~* "/static/" ) {
#不跳轉到index.html
set $isIndex 0;
}
if ($isIndex = 1 ){
set $inIndexJS 0;
rewrite .* /index.html;
break;
}
}
相關文章
- win10瀏覽器打不開部分網頁怎麼解決_window10瀏覽器打不開網頁處理方法Win10瀏覽器網頁
- Edge瀏覽器被搜狗瀏覽器篡改的解決方法瀏覽器
- ie瀏覽器打不開網頁怎麼辦 網路正常但是ie瀏覽器打不開解決方法瀏覽器網頁
- win10 edge瀏覽器打不開影片的解決方法Win10瀏覽器
- getElementsByClassName()方法的瀏覽器支援版本瀏覽器
- 操縱瀏覽器歷史記錄 : popstate() 、 history.pushState() 、 window.history.pushState()瀏覽器
- 谷歌瀏覽器打不開網頁怎麼解決 谷歌瀏覽器電腦上無法開啟網頁解決方法谷歌瀏覽器網頁
- win10 edge瀏覽器打不開視訊的解決方法Win10瀏覽器
- win10谷歌瀏覽器打不開網頁怎麼辦_win10打不開谷歌瀏覽器的解決方法Win10谷歌瀏覽器網頁
- 瀏覽器支援ES6的最優解決方案瀏覽器
- windows10系統下360瀏覽器打不開的解決方法Windows瀏覽器
- WIN10瀏覽器打不開LOL官網怎麼辦 win10瀏覽器LOL網站打不開解決方法Win10瀏覽器網站
- 監聽瀏覽器返回,pushState,popstate 事件,window.history物件瀏覽器事件物件
- .finally is not a function —— 解決低版本瀏覽器axios不支援finallyFunction瀏覽器iOS
- win10ie瀏覽器不支援付款怎麼解決_win10ie瀏覽器不支援付款如何修復Win10瀏覽器
- HTML5 之瀏覽器支援介紹HTML瀏覽器
- windows10系統下360瀏覽器打不開網頁的解決方法Windows瀏覽器網頁
- win10瀏覽器設定不了主頁怎麼辦_win10瀏覽器主頁修改不過來解決方法Win10瀏覽器
- 【爬坑日記】使用webpack、babel-loader/babel-polyfill解決ie瀏覽器不支援es6WebBabel瀏覽器
- Android 8.0 的部分坑及對應解決方法Android
- React Native填坑之旅--多平臺支援之WebReact NativeWeb
- Google瀏覽器主頁被搜狗導航劫持解決方法Go瀏覽器
- vscode使用Chrome瀏覽器除錯不好用,解決方法!!VSCodeChrome瀏覽器除錯
- google瀏覽器打不開網頁是怎麼回事 谷歌瀏覽器無法上網怎麼解決Go瀏覽器網頁谷歌
- python用selenium開啟瀏覽器後瀏覽器關閉---解決辦法Python瀏覽器
- 【git實際應用填坑解決】Git
- win10系統下360瀏覽器卡死的解決方法Win10瀏覽器
- win10chrome瀏覽器奔潰怎麼辦_win10chrome瀏覽器奔潰的解決方法Win10Chrome瀏覽器
- 瀏覽器原生支援平滑滾動瀏覽器
- [譯] 瀏覽器中 CSS 支援指南瀏覽器CSS
- 【解決方法】正常遊覽Flash頁面,解決主流遊覽器的不支援問題(如Edge,Firefox)Firefox
- 庖丁解牛之瀏覽器事件環瀏覽器事件
- 如何在瀏覽器上新增一鍵式填寫瀏覽器
- win10瀏覽器看不了圖片不顯示怎麼解決Win10瀏覽器
- win10開啟瀏覽器假死怎麼辦_win10一用瀏覽器就假死解決方法Win10瀏覽器
- win10瀏覽器字型鋸齒如何恢復 徹底解決win10瀏覽器字型鋸齒方法Win10瀏覽器
- Windows10系統ie瀏覽器出現假死的解決方法Windows瀏覽器
- 瀏覽器之渲染引擎瀏覽器