6

私はこの問題を数回検索しましたが、手ぶらで出てきました。誰かが私のために物事を明確にし、正しい方向に私を向けることができることを願っています。

問題:検索フォームを送信した後、結果のリストを表示するページがあります。ユーザーが結果の1つをクリックすると、ブラウザーは結果に関する詳細情報を表示する新しいページに移動します。次に、ユーザーが[戻る]ボタンをクリックして結果にパックすると、ブラウザはページをリロードし、最後にクリックされた結果ではなく、ページの上部を表示します。

目標:私が望むのはこれです:ユーザーが戻るボタンをクリックすると、ブラウザは前のページに戻り、ページの上部を表示する代わりに、前の位置にページを表示する必要があります。

解決策:この結果をどのように達成できるかについて、私は完全に迷っています。それはjavascript、またはブラウザに送信されるヘッダーと関係があるのでしょうか、おそらくキャッシングと関係があるのでしょうか。

4

4 に答える 4

2

これが非常に重要な場合は、次のことを調査することをお勧めします。

  • id各発信リンクにsを追加します
  • JavaScriptを使用onClickしてリンクのをキャプチャします
  • リンクがクリックされたら、ユーザーをそのリンクのid フラグメント識別子にリダイレクトし、必要に応じてリンクアウトします

http://www.example.com/#link27ユーザーが戻るボタンを押すと、たとえばではなく、その特定のリンクに戻ります。http://www.example.com/

あなたはここからいくつかのアイデアを得ることができるかもしれません:

于 2009-08-01T01:24:47.803 に答える
1

javascriptとjqueryを使用してウィンドウのスクロール位置を設定し、Cookieを使用してスクロール先の位置を保存できます。検索結果が表示されたページの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"

于 2009-08-01T01:31:14.927 に答える
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);
        }
    }
}
于 2009-08-01T01:25:16.697 に答える
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);

助けてくれたみんなに感謝します。

于 2009-08-01T15:22:54.050 に答える