2009-08-01 72 views
5

我已經爲這個問題做了一些搜索,我已經空手而歸了。我希望有人能爲我澄清一些事情,並指出我正確的方向。瀏覽器不記得上次查看的頁面的位置

問題:我有一個頁面顯示提交搜索表單後的結果列表。當用戶點擊其中一個結果時,瀏覽器進入一個顯示更多結果信息的新頁面。當用戶點擊「後退」按鈕打包結果時,我的瀏覽器將重新加載頁面並顯示頁面的頂部,而不是上次點擊的結果。

目標:我想要的是:當用戶點擊後退按鈕時,瀏覽器應該回到前一頁,而不是顯示頁面頂部,而是顯示前一頁位置的頁面。

解決方案:我完全失去了這個結果如何實現。它可能與JavaScript有關,或者發送給瀏覽器的頭文件,可能與緩存有關。

回答

0

我通過發送頭與PHP解決了這個問題。這是我的解決方案:

header("Expires: 0"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: store, cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", FALSE); 

感謝大家的幫助。

2

如果這是令人難以置信的重要,我建議研究以下內容:

  • 添加id s到每個輸出鏈路
  • 使用JavaScript來捕捉onClick的鏈接
  • 當鏈接被點擊,將用戶重定向到該鏈接的鏈接idfragment identifier,然後根據需要鏈接出

當用戶點擊返回按鈕時,他們將返回到該特定鏈接,例如,的http://www.example.com/#link27代替http://www.example.com/

您可以從這裏得到一些想法:

+0

所以僞代碼看起來像這樣: 1.用戶單擊結果列表中的鏈接。 2.通過點擊的鏈接調用onClick事件。 3.從事件調用的函數獲取鏈接的ID。 4.該功能將頁面重定向到結果頁面,並將鏈接的ID添加到地址末尾 5.結果頁面重新加載後,該功能會將頁面重定向到頁面,並提供有關結果的更多信息。 這是你的意思嗎?我可以看到它是如何工作的,但是如果找到一個更直接的方法而不必重新加載結果頁面,這將是很好的。 – VinkoCM 2009-08-01 01:42:53

+0

是的,確切地說。是的,這很複雜。 – Anirvan 2009-08-01 17:14:27

+0

@VinkoCM,不需要整頁重新加載。在大多數瀏覽器中,在同一頁面的片段之間移動應該幾乎是瞬間的。 – Anirvan 2010-11-01 20:06:07

0

在回答問題的第一部分是,你使用錨定着陸在頁面以外的頁面上。所以,如果我有這個在我的html在我的頁面的底部:

<a name="f"></a> 

那麼我可以通過附加錨他URL的末尾有用戶地有:

http://www.bullionvalues.com/glossary.aspx#f 

所以,如果您在談論ASP.Net,您可以將錨點放置在頁面信息頁面的隱藏字段中,然後使用Page.PreviousPage屬性從搜索頁面中讀取它。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.PreviousPage != null) 
    { 
     Object o = PreviousPage.FindControl("hfAnchor"); 
     if (o != null) 
     { 
      HiddenField hf = o as HiddenField; 
      Response.Redirect(Request.Url+"#"+hf.Value); 
     } 
    } 
} 
1

您可以使用JavaScript和jQuery設置窗口和餅乾的滾動位置存儲滾動到的位置。在頁面與搜索結果的JavaScript,你可以有這樣的事情:

var COOKIE_NAME = "scrollPosition"; 
$(document).ready(function() { 

    // Check to see if the user already has the cookie set to scroll 
    var scrollPosition = getCookie(COOKIE_NAME); 
    if (scrollPosition.length > 0) { 
     // Scroll to the position of the last link clicked 
     window.scrollTo(0, parseInt(scrollPosition, 10)); 
    } 

    // Attach an overriding click event for each link that has a class named "resultLink" so the 
    // saveScrollPosition function can be called before the user is redirected. 
    $("a.resultLink").each(function() { 
     $(this).click(function() { 
      saveScrollPosition($(this)); 
     }); 
    }); 

}); 

// Get the offset (height from top of page) of the link element 
// and save it in a cookie. 
function saveScrollPosition(link) { 
    var linkTop = link.offset().top; 
    setCookie(COOKIE_NAME, linkTop, 1); 
} 

// Boring cookie helper function 
function getCookie(name) { 
    if (document.cookie.length > 0) { 
     c_start = document.cookie.indexOf(name + "="); 
     if (c_start != -1) { 
      c_start = c_start + name.length + 1; 
      c_end = document.cookie.indexOf(";", c_start); 
      if (c_end ==- 1) c_end = document.cookie.length; 
      return unescape(document.cookie.substring(c_start, c_end)); 
     } 
    } 
    return ""; 
} 
// Another boring cookie helper function 
function setCookie(name, value, expiredays) { 
    var exdate = new Date(); 
    exdate.setDate(exdate.getDate() + expiredays); 
    document.cookie = name + "=" + escape(value) + 
     ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()); 
} 

這裏假設你的搜索結果鏈接有class="resultLink"

相關問題