java href_什么是href =“#”,为什么使用它?

在许多网站上,我看到具有href="#"链接。 这是什么意思? 这有什么用途?

#1楼

通常创建无序列表是为了将它们用作菜单,但是li列表项是文本。 因为列表li的项目是文本,鼠标指针会不会是一个箭头,而是一个“I形光标”。 用户习惯于单击某些东西时看到指向鼠标指针的手指。 使用锚标签, li标签a内部会导致鼠标指针更改为手指。 使用列表作为菜单时,手指要好得多。

如果该列表用于菜单,并且不需要链接,则不需要指定URL。 但是问题是,如果忽略href属性,则标记中的文本将被视为文本,因此鼠标指针将返回到I光标。 I光标可能使用户认为菜单项不可单击。 因此,您仍然需要href ,但不需要指向任何地方的链接。

您可以在菜单列表中使用很多div或p标签,但是鼠标指针也将是它们的I光标。

您可以使用许多彼此堆叠的按钮来获得菜单列表,但是列表似乎更可取。 这可能就是为什么在列表标签​​内的定位标签中使用指向无处的href="#"原因。

您可以在CSS中设置指针样式,这是另一种选择。 href="#"到无处可能只是设置某些样式的懒惰方式。

#2楼

关于超链接:

锚标记- 的主要用途是作为href属性,因为它指定了位置。

杂凑:

超级链接中的井号( #指定了应将窗口滚动到的html元素ID。

href="#some-id"将滚动到当前页面上的元素,例如

href="//site.com/#some-id"将转到site.com并滚动到该页面上的ID。

滚动到顶部:

href="#"没有指定ID名称,但是具有相应的位置-页面顶部。 单击带有href="#"的锚点会将滚动位置移到顶部。

根据

超链接占位符:

模板预览中的一个超链接占位符有意义的示例。 在模板的单页演示中,我经常看到因此anchor标记是一个超链接,但不会随处可见。 为什么不将href属性留空? 空白的href属性实际上是指向当前页面的超链接。 换句话说,它将导致页面刷新。 正如我所讨论的, href="#"也是超链接,并且会导致滚动。 因此,超链接占位符的最佳解决方案实际上是href="#!" 这里的想法是希望页面上没有id="!"的元素id="!" (是谁做的!?),因此超链接什么也没指-因此什么也没发生。

关于定位标记:

您可能想知道的另一个问题是:“为什么不只关闭href属性?”。 我听到的一个常见答复是href属性是必需的,因此它应该“出现在”锚点上。 这是假的! 只有当锚实际上是超链接时,才需要href属性!

#3楼

正如其他一些答案所指出的那样, a元素需要href属性,而#用作占位符,但这也是历史产物。

href

这是定义超文本源链接的锚的唯一必需属性,但在HTML5中不再需要。 省略此属性将创建一个占位符链接。 href属性指示链接目标,可以是URL或URL片段。 URL片段是一个名称,其前面带有井号(#),用于指定当前文档中的内部目标位置(ID)。

另外,按照HTML5 规范 :

如果a元素没有href属性,则该元素表示一个占位符,否则可能会放置一个链接(如果存在的话),该链接仅由元素的内容组成。

#4楼

将href =“#”用于空链接的问题在于,它会将您带到页面顶部,这可能不是您想要的操作。 为避免这种情况,对于较旧的浏览器或非HTML5文档类型,请使用

Goes Nowhere

#5楼

不幸的是, 的最常见用法是懒惰的程序员,他们希望可单击的非超链接javascript编码的元素的行为类似于锚点,但不能使它们添加cursor: pointer; 或:hover样式将其非超链接元素添加到类中,并且由于过于懒惰而无法将href设置为javascript:void(0); 。

问题是一个或另一个不可避免地以javascript错误结尾,而带有onclick javascript错误的锚点始终以其href结尾结尾。 通常,这最终会导致页面顶部令人讨厌的跳转,但是对于使用的网站, 被视为 ,导致导航异常。 any logable errors are being generated, you won't see them in the latter case unless you enable persistent logs. 正在生成任何可记录错误,则在后一种情况下,除非启用持久日志,否则您将看不到它们。

used as a non-anchor it have its href set to javascript:void(0); 如果锚定元件用作一个非锚定它有其href设置javascript:void(0); degradation. 为了降级。

我只是浪费了两天时间来调试一个本应只是刷新页面的随机意外页面重定向,最后将其跟踪到引发的click事件的函数。 用javascript:void(0);替换# javascript:void(0); 修复。

星期一我要做的第一件事是清除所有实例的项目。

`Unescaped xml character` 错误通常发生在XML或者类似的标记语言中,当代码或者数据包含特殊字符,如小于号(<)、大于号(>)、和号(&)等,而这些字符没有被适当的转义时,就会出现这样的错误。 在你提供的代码片段中: ```javascript window.location.href = "<%=basePath%>News/read?nid="+id; ``` 问题可能出在 `<%=basePath%>` 这部分代码上。这看起来像是JSP(Java Server Pages)的语法,用于将服务器端的变量嵌入到客户端的JavaScript代码中。如果 `<%=` 和 `%>` 之间的变量 `basePath` 包含了未转义的特殊字符,那么就可能会在生成的JavaScript代码中产生XML字符解析错误。 为了解决这个问题,你需要确保 `basePath` 变量中的内容不包含任何可能干扰XML解析的字符。在JSP中,可以使用 `java.net.URLEncoder` 类的 `encode` 方法对URL进行转义,或者使用JSP的内置函数 `Encode.forJavaScript`(如果你使用的是JSTL库)来确保URL是安全的。 示例: ```jsp <% // 假设有一个方法来获取basePath,并确保它被正确转义 String basePath = Encode.forJavaScript(request.getContextPath()); String id = "123"; // 假设id是一个字符串类型 %> <script type="text/javascript"> window.location.href = "<%=basePath%>News/read?nid="+<%=id%>; </script> ``` 在这个示例中,`basePath` 通过 `Encode.forJavaScript` 被转义,而 `id` 则直接在JavaScript代码中使用,因为它是一个字符串,通常不会包含特殊字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值