我有一个类似于index.aspx
的网址,但是当我点击链接到anchor
标记的按钮时,会添加#video
所以它会看起来
index.aspx#video
是否可以从#video
移除url
?
答案 0 :(得分:0)
我没有得到太多反馈,所以由于你的问题含糊不清,这里有三个选项。
选项1 - 使用锚点位置,移除锚点,适当地重新滚动窗口。
您可以使用此article引用的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 - 获取没有锚标记的网址
您可以使用替换RegEx从网址中删除锚点,您可以使用以下内容:
location.href.replace(/\#\w+/g, "");
选项3 - 不要使用锚点并使用JavaScript滚动
您可以不使用锚点,只需按照此tutorial使用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>