【问题标题】:How to remove #anchor (location.hash) from url when linking from other page within website?从网站内的其他页面链接时如何从网址中删除#anchor(location.hash)?
【发布时间】:2014-04-30 08:11:06
【问题描述】:

我必须转换一个滚动的单一登录页面主题才能使用 WordPress。它惊人地从 URL 中删除了 #anchor ids

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

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

首先,它不再从 URL 中删除 #anchor - 单击的任何锚点都会无限期地保留在 URL 中。其次,对齐稍有偏差(从主页导航时很好)。

history.pushState 方法可以从 URL 中删除 #,但这也有问题 - 它在浏览历史记录中创建了一个额外的步骤,并且可能不适用于足够多的浏览器。

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

但在从主页导航时请注意不要重新加载页面。如果这是可能的,它也可能会解决对齐问题。

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

【问题讨论】:

    标签: javascript jquery html url


    【解决方案1】:

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

    为什么不希望哈希出现在 URL 中?

    【讨论】:

    • 大多数情况下不想要哈希,因为它很难看!
    【解决方案2】:

    试试这个。演示在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);
    

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      相关资源
      最近更新 更多