【问题标题】:Hide URL when mouse hover over asp:HyperLink鼠标悬停在 asp:HyperLink 上时隐藏 URL
【发布时间】:2016-01-15 23:04:32
【问题描述】:

我已经看到在 HTML 中的 <a> 标记上使用 javascript:void(0) 方法来隐藏超链接对象的目标 URL。现在我想在<asp:HyperLink> 上做同样的事情,我该怎么办?

我正在做 ASP.NET,这是标记:

<asp:HyperLink runat="server" ID="hl1">Blah blah blah</asp:HyperLink>

在代码隐藏中,我使用HttpUtility.UrlDecode 方法为hl1 指定了NavigateUrl


我尝试了hl1.Attributes[href]="javascript:void(0)"; 并排,但不起作用。无法再打开NavigateUrl

【问题讨论】:

  • 您是否尝试过创建一个由您的 asp:hyperlink 控件触发的方法?为什么不希望用户看到 URL?有点阴暗……
  • 我正在尝试创建一个 JavaScript 函数来触发链接。
  • 您想隐藏显示在浏览器窗口底部的网址吗?
  • 浏览器底部显示当前页面URL可以吗?默认情况下,浏览器会显示一些内容。
  • @Sunil 可以工作。它也可以是一条消息,一个静态字符串,任何东西。

标签: c# asp.net


【解决方案1】:

您需要将要导航到的 url 存储在隐藏字段中,并在标记中设置 NavigateUrl = "#",如下所示。这样当用户的光标悬停在链接上时,实际的导航 URL 将永远不会显示在浏览器底部。

然后在客户端为超链接附加一个click 事件处理程序,您只需将超链接的onclick 属性设置为一个名为navigate 的JavaScript 函数即可。实际重定向到新页面是由这个navigate 函数完成的。

在这种情况下,您只会看到以# 为后缀的当前页面的URL。例如,如果您当前的页面 URL 是http://localhost/mysite/view.aspx,那么它会在浏览器底部显示http://localhost/mysite/view.aspx#

需要标记

<asp:HyperLink runat="server" ID="hl" NavigateUrl="#" 
           onclick="navigate();">Some Text</asp:HyperLink>
<asp:HiddenField ID="hdnURL" runat="server" Value="http://www.microsoft.com" />

需要 JavaScript

<script type="text/javascript">
        function navigate() {
            window.location.href = document.getElementById("<%=hdnURL.ClientID%>").value;
        }
</script>

如果您必须在代码隐藏中为超链接设置 NavigateURL,您可以使用的另一种方法如下。在这种方法中,您需要在内容呈现之前删除 NavigateURL 并将其存储在名为 linkUrl 的全局变量中。在内容呈现之前触发的事件是 pageLoad,我们将使用该事件来执行此 hack。

JavaScript 中的全局变量必须始终在所有方法之外声明。

然后在点击超链接时,我们可以从linkUrl的全局变量中获取值并将用户重定向到该位置。

注意:保持超链接的标记与第一种方法相同。但是从该标记中删除隐藏字段。

<script type="text/javascript">
    function navigate(event) {
         window.location.href = linkURL;
    }
    var linkUrl = null;
    function pageLoad() {
        var link = document.getElementById("<%=hl.ClientID%>");
        linkURL = link.getAttribute("href");
        link.setAttribute("href","#");
    }
</script>

【讨论】:

  • 我给你这个供我以后参考。谢谢你。但我真正需要在 C# 代码隐藏中分配 NavigateUrl
  • 如果您在后面的代码中分配 NavigateURL,那么您最终会得到一个href="some url" 作为链接,然后将鼠标悬停在链接上时该 URL 将显示在底部。因此,有必要使用 url 而不是 NavigateURL 来设置隐藏字段的值。
  • 如果您必须在代码隐藏中设置 NavigateURL,您可以做一个 hack,但是您想破解它吗?如果你想要那个黑客,我也可以发布它。
  • 我明白你的意思。但是,该 URL 不是静态的 www.microsoft.com,它是基于一系列 if 语句生成的。
  • 好的。我现在就发。
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2019-09-10
相关资源
最近更新 更多