关于返回按钮的事情
?
?在微信的項目涉及到多個不同的項目間跳轉那么頭部的返回按鈕怎么辦呢?
在項目之間跳轉還有在微信菜單進入頁面時我們用了一個中轉頁進行參數處理和頁面跳轉判斷
目前要用到code,userId等從后端寫好的帶參數的url到前端獲取然后去調用后端的一個校驗code和獲取userID如果有userID就請求跳轉接口
如果沒有就跳轉到登錄頁注冊綁定
然后跳轉到另外一個項目的那么我們得用到window.location.replace跳轉過去
用了window.location.replace后我們就沒有window.history了
那么問題來了產品要求跳過去的項目得保留返回按鈕
那么我們可以window.history.length的多少判斷有沒有返回的內容咯(不同瀏覽器值不一樣chrome沒有歷史內容的時候是1)
理論上當window.history.length小于沒歷史內容條數的時候可以跳到別的一些自己定義的界面
但是你要在跳到的這個頁面A里面點了里面的鏈接然后跳轉到B頁面后再返回頁面A那么他的window.history.length會增加的那么判斷就不準確了我們window.history.back()沒有反應了
這時候應該要用document.referrer === ''來判斷他有沒來源
window.history.length>1 && document.referrer !== ''?window.history.back():(typeof(WeixinJSBridge)=="undefined" ? window.close() : WeixinJSBridge.call('closeWindow'));像我寫的是這樣的(沒法解決上面的問題第一次是可以的但是重B頁面返回后就不可以了咋整啊郁悶!~)
document.referrer有一些兼容性問題的不過用在H5下應該還好具體看如下
| 直接在地址欄輸入URL | “” | “” | “” | “” | “” | “” | “” | “” |
| 從書簽訪問URL | “” | “” | “” | “” | “” | “” | “” | “” |
| 從頁面A點擊超鏈接,跳轉到頁面B(target=”_self”) | √ | √ | √ | √ | √ | √ | √ | √ |
| 從頁面A點擊超鏈接,跳轉到頁面B(target=”_blank”) | √ | √ | √ | √ | √ | √ | √ | √ |
| 從頁面A右鍵單擊超鏈接,在新標簽頁中打開頁面B | - | √ | √ | √ | √ | √ | √ | “” |
| 從頁面A右鍵單擊超鏈接,在新窗口中打開頁面B | √ | √ | √ | √ | √ | √ | √ | “” |
| 拖動鏈接到地址欄 | “” | 無法拖動 | 無法拖動 | “” | “” | “” | “” | “” |
| 拖動鏈接到標簽欄 | - | “” | “” | “” | “” | “” | “” | “” |
| 使用瀏覽器的前進、后退按鈕 | √ | √ | √ | √ | √ | √ | √ | √ |
| JS 修改 location.href | “” | “” | “” | √ | √ | √ | √ | √ |
| JS 使用 window.open | “” | “” | “” | “” | √ | √ | √ | √ |
| 服務器重定向(302跳轉) | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 | 定向之前的頁面 |
| 頁面 Meta Refresh | “” | “” | “” | “” | “” | 轉向頁 | 轉向頁 | 轉向頁 |
上表中的“√”表示能正常取到 referrer,”” 表示 referrer 為空。
除了 IE 外,其它瀏覽器都是目前官網上能下載到的最新版本,其中 Safari 同時測試了 Windows 版和 Mac 版,結論一樣。
另外還有一些情況未做測試,例如點擊 Flash 跳轉時各瀏覽器下能否保持 referrer 等。
上表中大部分情況是符合預期的,不過似乎也有幾處需要注意的:
1、在 Safari 中,右鍵打開鏈接會丟失 referrer;
2、在 IE 中,修改 location.href 或使用 window.open 打開頁面會丟失 referrer(IE 9 有一點例外,使用 location.href 跳轉不會丟失 referrer);
3、使用 meta 跳轉時,IE / Firefox 下會丟失 referrer。
最后,一個簡單的結論是:如果你需要通過 document.referrer 采集頁面訪問來源,最好不要使用 JS 跳轉或打開新窗口,也不要使用 meta 跳轉。
?
上面的數據是
參考網站:http://www.jb51.net/article/52349.htm得出的我就搬過來記錄一下
?
?最后的解決方法我還是用的其他方法實現了
用的是sessionStorage.setItem來存狀態判斷
?
========================================
有網友說:可以變通一點,go之前注冊一個onbeforeunload事件,如果能夠go就會觸發這個事件,否則不會觸發。如果只是錨點跳轉,頁面并不真正離開,那就判斷一下hash的變化。
不知道可行不可行
轉載于:https://www.cnblogs.com/lichuntian/p/6078534.html
總結
- 上一篇: background-clip与back
- 下一篇: 五指棋,贪吃蛇,中国银行ATM源码链接