带有哈希的链接到我的页面,
http://www.mydomain.com/somewhere/page.html#somehash
未正确对齐,因为上传的somehash
中不存在ID page.html
。 ID由onload
脚本创建,并通过DOM添加。在onload
脚本的那部分完成之前,页面上不存在该ID。
使用不同的哈希值在页面内移动工作正常,因为所有ID都已就位。
如何指示浏览器在onload
脚本末尾重新对齐(与重新加载)?
答案 0 :(得分: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);
}
}
答案 1 :(得分: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;
}
}
}
答案 2 :(得分:0)
function loadingstuff(){
//stuff
location.href += "#somehash";
}
window.onload = loadingstuff;
这将集中于新添加的元素。
答案 3 :(得分:0)
在onload
var hash = window.location.hash;
window.location.hash = '';
window.location.hash = hash;
这似乎工作正常