繁体   English   中英

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

[英]How to remove #anchor (location.hash) from url when linking from other page within website?

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

一切正常,直到客户端要求添加另一个页面但保持相同的标题导航

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

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

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

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

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

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

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

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

尝试这个。 小提琴演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM