在前端開發中使用iframe做導航進行跳轉時,可以用js修改iframe的src進行頁面的切換
$('#myiframe').attr('src',src);
這樣產生的問題是,通過瀏覽器的退回按鈕退回頁面時,是在iframe里面進行的回退,主頁的地址(即瀏覽器的地址)是不會變化的,且iframe的src屬性也沒有發生變化,這樣就無法監控到回退到哪個頁面了,會產生導航菜單識別的問題。
解決的辦法是用iframe的contentWindow.location.replace('')方法進行跳轉,即
$('#myiframe')[0].contentWindow.location.replace(src);
這樣在點擊回退按鈕時,主頁的地址就會發生變化。
通過hash來對地址進行導航時,可以通過監控hash的變化而達到監控當前頁面地址的問題,也可以重新刷新;同時也可以監控回退事件,並在事件處理函數中刷新頁面。
function detectBack() { //監聽hashchange事件 window.addEventListener('hashchange', function() { //為當前導航頁附加一個tag this.history.replaceState('hasHash', '', ''); //可以取當前的hash並判斷是哪個頁面 }, false); window.addEventListener('popstate', function(e) { if (e.state) { //偵測是用戶觸發的后退操作, dosomething //這里刷新當前url this.location.reload() } }, false); }
通過這種方式,可以給出一種通過hash和iframe進行頁面跳轉的方案
