从url中删除错误的内容
本文关键字:错误 删除 url | 更新日期: 2023-09-27 18:08:12
我有一个url是这样的index.aspx
,但是当我点击链接到anchor
标签的按钮时,它会添加这个#video
所以它看起来是
index.aspx#video
是否有办法从url
中去除#video
?
由于你的问题模棱两可,我没有得到太多的反馈,所以这里有三个选择。
选项1 -使用锚点位置,删除锚点,适当地重新滚动窗口
您可以使用location访问#值。本文引用的散列。不幸的是,一旦你设置了位置。hash = ",页面重新导航到屏幕顶部(并在URL中留下#符号)。如果你设置了位置。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>