0

私のページへのハッシュ付きのリンク、

http://www.mydomain.com/somewhere/page.html#somehash

somehashIDがアップロードされた に存在しないため、 は正しく配置されませんpage.html。ID はonloadスクリプト内で作成され、DOM を通じて追加されます。onloadスクリプトのその部分が完了するまで、ID はページに存在しません。

すべての ID が既に配置されているため、異なるハッシュを使用してページ内を移動しても問題ありません。

onloadスクリプトの最後でブラウザー自体を再調整するように (リロードではなく) 指示するにはどうすればよいですか?

4

4 に答える 4

1

要素が追加された後にこれを試してください

    var hash = location.hash;
    if (hash && hash.substr(1).length) {
        var hashLink = document.getElementsByName(hash.substr(1))[0];
        if (typeof(hashLink) != 'undefined' && hashLink.offsetTop != 'undefined') {
            window.scrollTo(0, hashLink.offsetTop);
        }

    }

デモ: http://jsfiddle.net/UJ5DX/2/

于 2013-01-02T06:09:58.850 に答える
0
function loadingstuff(){
    //stuff
    location.href += "#somehash";
}

window.onload = loadingstuff;

これは、新しく追加された要素に焦点を当てます。

于 2013-01-02T05:49:41.150 に答える
0

この関数を使用して、対応するハッシュまでページをスクロールできます。

function scrollToHash(hash) {
    var allLinks = document.getElementsByTagName('a');

    for (i=0;i<allLinks.length;i++) {
        var lnk = allLinks[i];
        if (lnk.name == hash) {
            console.log("dd");
            i = allLinks.length;
            var desty = lnk.offsetTop;
            var thisNode = lnk;
            while (thisNode.offsetParent && (thisNode.offsetParent != document.body)) {
                thisNode = thisNode.offsetParent;
                desty += thisNode.offsetTop;
            }

            window.scrollTo(0,desty)

            break;
        }
    }
}
于 2013-01-02T05:39:35.097 に答える
0

最後にonload

var hash = window.location.hash;
window.location.hash = '';
window.location.hash = hash;

これはうまくいくようです

于 2013-01-02T10:17:52.353 に答える