Ancor没有使用javascript。
当我使用URL#anchor加载页面时,锚点可以正常工作。 当我通过javascript设置它作为例子。页面正在加载,但锚点不起作用。 (顺便说一下:为了我的目的,重要的是重新加载)。
这里是我的剧本(评论我试过的内容)..并且实际上我尝试了更多......
function hash_test() {
href = window.location.href;
alert(href);
if (href.lastIndexOf('#') > 0){ //remove hash if present
href = href.substring(0,href.lastIndexOf('#'));
}
alert(href);
/* window.location.href = href;
window.location.hash = '#beitrag9';*/ // does not work to
window.location.href = href +'#beitrag9';
window.location.reload(true);
}
答案 0 :(得分:1)
你的脚本对我有用:现在就尝试使用这个网页
function hash_test() {
href = window.location.href;
alert(href);
if (href.lastIndexOf('#') > 0){ //remove hash if present
href = href.substring(0,href.lastIndexOf('#'));
}
window.location.href = href +'#35711597';
window.location.reload(true);
}
在控制台中粘贴该功能并调用hash_test()
重新打开此页面并将此处带到此处。
在某些情况下(在直接用户交互时不会发生页面重新加载)或在某些浏览器上它不起作用。
您可以尝试强制页面始终以编程方式滚动到锚点,并在标题的底部加载。
<script>
window.onload=function()
{
var href,
hash;
href = window.location.href;
if( href.lastIndexOf( '#' ) != -1 )
{
hash = href.substring( href.indexOf( '#' ) );
if( hash.lastIndexOf( '?' ) != -1 )
{
// cut away query string as well (if present)
hash = hash.substring( 0, hash.indexOf( '?' ) );
}
window.location.hash = hash;
}
};
</script>
底线:
Anchor是一个众所周知且受支持的HTML功能(甚至StackOverflow依赖于它们来生成指向特定答案的链接)。
然而,你对它们的使用是非常“优势”:我提出的代码片段是一个黑客而不是一个规范的解决方案,你可能会期望跨浏览器的行为不一致。
现在让我试着为你原来的问题提供更多背景信息:
您需要重新加载页面的原因似乎是将一些数据发送到服务器并且(最终)显示页面内容的一些更改。
如果你必须这样做,那么大约十年左右,就有 ajax 。
您将数据发送到服务器,从服务器等待(异步)其他输出数据,然后以编程方式将更改应用于页面。
这为用户提供了更好的界面体验,最终结果是一致的。
现在你有一个“体面”的解决方案。我建议您考虑 ajax (最终借助jQuery库),以便将来改进您正在进行的网站或未来的项目。