如何从网站内的其他页面链接时从网址中删除#anchor(location.hash)?

时间:2014-04-30 08:11:07

标签: javascript jquery html url

我必须转换滚动的单一着陆页主题才能使用WordPress。它非常棒地删除了URL中的#anchor ids

在客户端要求添加其他页面但保持相同的标题导航之前,一切正常。

现在我从内页(mysite.com/page)href="/#anchor"进行链接。这基本上有效,但有两个错误我无法解决。

首先,它不再从URL中删除#anchor - 无论点击哪个锚点都无限期地保留在URL中。其次,对齐稍微偏离(从主页导航时很好)。

history.pushState方法类似于从URL中删除#,但这也是错误的 - 它在浏览历史记录中创建了一个额外的步骤,并且可能无法在足够的浏览器上运行。

请原谅,有没有办法,使用javascript (or php)强制href="/#anchor"首先转到index.php(顶部),然后很好地滚动到锚点?

但小心不要在从主页导航时重新加载页面。如果可以的话,它也可能会解决对齐问题。

我开始相信没有什么是不可能的 - 所以不要让我失望! : - )

2 个答案:

答案 0 :(得分:0)

因此,如果您使用不在历史记录中添加额外步骤的replaceState。正如您所说,虽然浏览器支持有限,特别是IE http://caniuse.com/#search=pushstate

为什么你不希望哈希在URL中?

答案 1 :(得分:0)

试试这个。在Fiddle

中进行演示
<a href="#anchorName">Goto</a>

<a name="anchorName">Come to me</a>


(function($) {
    $(document).ready(function() {
    var url=document.URL.split("#");
    var ancher=url[1];
         $('html, body').animate({
           'scrollTop':   $('#'+ancher).offset().top
         }, 5000);
    });
})(jQuery);