0

我有一个这样的 url index.aspx,但是当我点击一个链接到anchor标签的按钮时,它会添加这个#video

所以看起来

index.aspx#video

有什么可以删除#videourl吗?

4

1 回答 1

0

由于您的问题含糊不清,我没有得到太多反馈,因此这里有三个选项。

选项 1 - 使用锚点位置,移除锚点,适当地重新滚动窗口。

您可以使用本文引用的 location.hash 访问 # 值。不幸的是,一旦您设置了 location.hash = '',页面就会重新导航到屏幕顶部(并在 URL 中留下 # 符号)。如果您设置 location.href,页面导航离开页面,丢失任何存储的局部变量。

您可以做的一种可能的解决方法如下:

function RemoveHash(){
  var y = location.hash.substring(1, location.hash.length);
  location.hash = '';
  window.scrollTo(0, y);
}

这样做的缺点是屏幕会在将屏幕移回顶部并返回到您的位置时闪烁。另一种方法是不使用锚点,而是在页面上查找元素的位置,但根据我的经验,这并不准确,并且因浏览器而异,并且成为维护问题。JQuery 库可能对此有所帮助,如果您沿着这条路线走,可能值得研究。

选项 2 - 获取不带锚标记的 Url

您可以执行替换 RegEx 以从 url 中删除锚点,您可以使用以下内容:

location.href.replace(/\#\w+/g, "");

选项 3 - 不要使用锚点并使用 JavaScript 滚动

您可以不使用锚点,而只需按照本教程使用 JavaScript 将页面滚动到正确的位置。基本思想是获取元素的滚动偏移量并将屏幕滚动到该位置。

function elmYPosition(eID) {
    var elm = document.getElementById(eID);
    var y = elm.offsetTop;
    var node = elm;
    while (node.offsetParent && node.offsetParent != document.body) {
        node = node.offsetParent;
        y += node.offsetTop;
    } return y;
}

并使用超链接调用 javascript:

<a href="javascript:void(0);" onclick="window.scrollTo(0, elmYPosition('myAnchor'))>myAnchor</a>
于 2013-04-10T13:46:31.143 回答