0

クライアントが URL の末尾に「#something」を含むページを開いたときに、スクリプトでいくつかのハッシュを使用して、ページのさまざまな要素にスクロールします。問題は、ユーザーが戻るボタンとクライアントのボタンを使用する場合です。クライアントが戻ってきたら、スクリプトを再び反応させるにはどうすればよいですか?

コードの関連部分は次のとおりです。

// Arrivée avec une ancre
var $h = window.location.hash;
if ($h != '') {
    var $arrh =  {'#home': '#panel_home', '#services': '#panel_services', '#realisations': '#panel_realisations', '#contact': '#panel_contact', '#about': '#panel_about' };
    $('#left').scrollTo($arrh[$h], 500);
}
else {
    $('#left').scrollTo('#panel_home', 500);
}

私の質問が理解できることを願っています...私はフランス人で、自分の考えを英語でできる限り説明しようとしました.

私が求めていることが可能かどうかはわかりませんが、アイデアがあれば、あなたの助けを歓迎します!

編集-0:

一見似たような議論を見たことがあります: Detecting Back Button/Hash Change in URL 解決策が見つかったら、読んで回答を返します (提案されたいくつかのリンクは非常に興味深いものです)。

4

4 に答える 4

2

このcssセレクターが役立つ場合があります。

#left:target
{
.
.
.
}
于 2012-11-14T11:21:59.277 に答える
1

このコードを関数に追加し、ハッシュが変更されるたびにその関数を呼び出します。私が完全に理解しているかどうかはわかりませんが、私がしていることから、これはあなたにとってうまくいくはずだと思います:

var scrollFunction = function (){
    var $h = window.location.hash;
    if ($h != '') {
        var $arrh =  {'#home': '#panel_home', '#services': '#panel_services', '#realisations': '#panel_realisations', '#contact': '#panel_contact', '#about': '#panel_about' };
        $('#left').scrollTo($arrh[$h], 500);
    }
    else {
        $('#left').scrollTo('#panel_home', 500);
    }
};
window.onhashchange = scrollFunction;
于 2012-11-14T11:17:29.900 に答える
1

jquery hash-change (https://github.com/cowboy/jquery-hashchange) や jquery history (http://tkyk.github.com/jquery-history-plugin/) などの jquery プラグインを使ってみることもできます。同様の要件について

于 2012-11-14T11:21:13.400 に答える
0

さて、私のニーズを満たすソリューションはそのプラグインにあります:

http://benalman.com/projects/jquery-hashchange-plugin/

それは他の誰かを助けるかもしれません...

Ps: とても使いやすいです。スクリプトをドキュメントにリンクして、次のようなものを追加するだけです。

$(window).hashchange(function(){
    my_func();
});
于 2012-11-15T00:02:54.080 に答える