我有一个这样的 url index.aspx
,但是当我点击一个链接到anchor
标签的按钮时,它会添加这个#video
所以看起来
index.aspx#video
有什么可以删除#video
的url
吗?
我有一个这样的 url index.aspx
,但是当我点击一个链接到anchor
标签的按钮时,它会添加这个#video
所以看起来
index.aspx#video
有什么可以删除#video
的url
吗?
由于您的问题含糊不清,我没有得到太多反馈,因此这里有三个选项。
选项 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>