18

私はこれまで見つけてきたことの逆をしたいです。私は js で多くの高さを設定しています。ページが読み込まれた後、URL のハッシュタグに移動したいと考えています。これは単純だと思いますが、明らかな答えはわかりません...例として、ここを確認してください...

http://alavita.rizenclients.com/#story

コードを使用してこれを試みました...

$(window).load(function() {
    var hashTag = window.location.hash;
    window.location = '/' + hashTag;
}); 

実際には、タグ付けされたセクションの先頭に移動しません...

4

5 に答える 5

36

ページの読み込み後にハッシュを変更するだけの場合:

window.onload = function (event) {
    window.location.hash = "#my-new-hash";
};

新しいハッシュで URL に移動する場合:

window.location.href = "http://website.com/#my-new-hash";

URL のハッシュの変更をリッスンする場合。window.onhashchange DOM イベントの使用を検討できます。

window.onhashchange = function () {
    if (location.hash === "#expected-hash") {
        doSomething();
    }
};

しかし、まだすべての主要なブラウザーでサポートされているわけではありません。現在、幅広いブラウザをサポートしています。短い間隔でをポーリングして変更を確認することもできますがwindow.location.hash、これもあまり効率的ではありません。

クロスブラウザ ソリューションの場合。これらのメソッドと他のいくつかのメソッドをフォールバック メカニズムと組み合わせたBen Alman のjQuery hashchange プラグインをお勧めします。

編集: 質問の更新後、ページをブックマークにスクロールしたいのですが?:

Element.scrollTopまたはjQueryの$.scrollTop()メソッドを使用できます。

$(document).ready(function (event) {
    var yOffset = $("#my-element").offset().top;
    $("body").scrollTop(yOffset);
});

こちらのドキュメントを参照してください。

于 2013-01-15T23:02:36.987 に答える
0

現在の場所を設定するだけです。

window.location = 'http://alavita.rizenclients.com/#story';

または、ハッシュを設定して(まだ設定されていない場合)、リロードします。

window.location.hash = hashTag;
window.location=window.location.href;
于 2013-01-15T22:39:38.763 に答える
0

質問を変更しました。

このソリューションを確認してください。 https://stackoverflow.com/a/2162174/973860これにより、何が起こっているのか、クロスブラウザーソリューションを実装する方法を理解できます。

注意: 最後に、必要なことを実行する jquery プラグインについて言及しています。

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

このプラグインを使用すると、このようなことができます。これは、現在のページで機能します。ただし、より堅牢になるように変更することもできます。

$(function(){

    // Bind the event.
    $(window).hashchange( function(){
        // get the hash
        var hash = window.location.hash;
        // click for your animation
        $('a[href=' + hash + ']').click();
    })

    // Trigger the event (useful on page load).
    $(window).hashchange();

});
于 2013-01-15T22:56:41.897 に答える