前端學習之iframe配合hash做菜單導航的問題:修改src跳轉與contentWindow.location.replace('')的問題


  在前端開發中使用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進行頁面跳轉的方案

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM