加载时不存在哈希时的页面焦点

page focus when hash does not exist on load

本文关键字:焦点 哈希时 不存在 加载      更新时间:2023-09-26

链接到我的页面,

http://www.mydomain.com/somewhere/page.html#somehash
由于上传的page.html中不存在ID somehash

无法正确对齐。该ID由onload脚本中创建,并通过DOM添加。该ID在页面上不存在,直到onload脚本的那一部分完成。

使用不同的散列在页面内移动很好,因为所有的ID都已经到位了。

我如何指示浏览器在onload脚本结束时重新对齐(与重新加载)?

添加元素后再试

    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/

function loadingstuff(){
    //stuff
    location.href += "#somehash";
}
window.onload = loadingstuff;

您可以使用此函数将页面滚动到相应的哈希值

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;
        }
    }
}

onload

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

这个似乎可以工作