锚不使用javascript

时间:2016-02-29 22:35:03

标签: javascript

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

1 个答案:

答案 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库),以便将来改进您正在进行的网站或未来的项目。