0

带有哈希的链接到我的页面,

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

somehash由于上传的 .id 文件中不存在ID,因此无法正确对齐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 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
function loadingstuff(){
    //stuff
    location.href += "#somehash";
}

window.onload = loadingstuff;

这将集中在新添加的元素上。

于 2013-01-02T05:49:41.150 回答
0

在结束时onload

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

这似乎工作正常

于 2013-01-02T10:17:52.353 回答