【问题标题】:Remove something wrong from url从 url 中删除一些错误
【发布时间】:2013-04-01 07:01:05
【问题描述】:

我有一个类似index.aspx 的网址,但是当我单击链接到anchor 标签的按钮时,它会添加此#video

这样看起来

index.aspx#video

是否可以从url 中删除#video

【问题讨论】:

  • 你想让锚仍然工作吗?
  • 你能发布你的代码吗?
  • 是的,我想继续工作,如果可能的话,我想删除#video
  • 您是要获取不带#video 的当前网址(即将其作为字符串变量传递给方法等),还是要从浏览器并且仍然将页面导航到该部分?前一个问题很简单,只需使用字符串替换或正则表达式替换,我会很乐意发布解决方案。如果您对后者感兴趣,那么还请解释为什么这很重要。
  • “#video”是主播的工作方式。

标签: c# asp.net url anchor query-string


【解决方案1】:

我没有得到太多反馈,因此由于您的问题模棱两可,这里有三个选项。

选项 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 - 获取不带锚标记的 Url

您可以使用替换正则表达式从 url 中删除锚点,您可以使用以下内容:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    相关资源
    最近更新 更多