JavaScript:history.go() 的妙用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
 在Web開發中,會遇到從一頁(父頁)導向另一頁(子頁),並且要求“返回”父頁的情況,在這裡如果用ASP.NET提供的Response.Redirect()方法,往往不會達到理想的效果,例如:返回後,重新載入了頁面,無法儲存導向子頁前的狀態,等等,在這裡我就介紹一下如何使用JavaScript中history.go()函數來實現返回功能並且儲存住狀態的方法。
     這個函數用起來很簡單,只要在頁面上加一個html的input元素,例如:
     <input type="button" value="返回">
     然後再為這個元素添加onclick屬性,如:
     <input type="button" value="返回" onclick="history.go(-1);">
     這樣就能達到返回上一頁的效果。但是,往往在實踐中,並沒有這麼簡單,當你在向伺服器提交請求的時候,引起頁面回傳,你再用history.go(-1)這招就不靈啦,它在這裡是返回你回傳前的狀態,go後面的參數,實際上就是標識你要返回你回傳第前n次的狀態,所以只要能記住回傳了幾次,就能用history.go(-n)準確地返回到父頁了。
     在Web開發中,全域變數也是存不住的,當頁面回傳後,全域變數的值就會丟失,取而代之的是檢視狀態,所以我們就只能用檢視狀態來記錄回傳的次數了。那麼就封裝一個檢視狀態屬性把。
     public int returnCount
     {
         get{
               if(ViewState["returnCount"] == null)
                   ViewState["returnCount"] = 0;
               return   (int)ViewState["returnCount"];
         }
         set { ViewState["returnCount"] = value ;}
     }
     定義好這個後,把他放到Page_Load裡面,讓他每次在頁面回傳時減1,這樣就能準確的記住回傳了幾次。
     protected void Page_Load(object sender, EventArgs e)
     {
         returnCount--; //要放在!iIsPostBack之外,要不然就僅僅在頁面第一次載入時執行一次,回傳時就不執行了。
         if(!IsPostBack)
         {

         }
     }
     吼吼,到這一步還沒完呢,要把我們封裝的屬性加到Js裡面。如下:
     <input type="button" value="返回" onclick="history.go('<% =returnCount %>');">
     這下就完美了,管你在頁面上怎麼回傳,只要一點這個按鈕,肯定會返回到父業的。
     注意:
     1、如果在本頁面上有Response.Redirect()到本頁或者類似的情況,那麼就要將returnCount作為查詢字串傳遞一下了,因為這東西在頁面失效時就over了。
     2、本文僅對非Ajax的Web系統有作用,Ajax的還沒仔細研究過 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.