首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解<a href="#!“

理解<a href="#!“
EN

Stack Overflow用户
提问于 2016-06-05 09:55:50
回答 1查看 5.6K关注 0票数 9

在单击#href属性中的链接后,我正在寻找一种防止被带到页面顶部的方法:

代码语言:javascript
复制
<a href="#" onclick="foobar()">click me</a>

然后我发现了一个简单的解决方案,将#转换为#!

代码语言:javascript
复制
<a href="#!" onclick="foobar()">click me</a>

例如,可以使用jQuery在线提供各种其他解决方案:

代码语言:javascript
复制
$('.service').click(function(e) {
    e.preventDefault();
});

最后,我最喜欢#!,因为它是如此干净的,但是我在任何地方都找不到任何关于在代码行中插入!时实际发生了什么的文档。

问题:

#!实际上是如何导致html代码的呢?这是一种防止将用户带到页面顶部的默认操作的好方法,还是该方法由于其他原因而不好?我担心的是,它可能是一种与某些浏览器不兼容的讨厌的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 09:59:00

#!实际上是如何导致html代码的呢?

它告诉浏览器,当单击该链接时,它应该将页面滚动到锚点!。因为页面上没有这样的锚点,所以页面不会移动。(从技术上讲,您可以在页面上有一个名称为!的锚,!是一个非常有效的HTMLid值。是的,just...you可能不知道。)

通过将id值分配给元素(或使用过时的<a name="...">...</a>构造)在页面上创建锚;带有片段标识符(#后面的位)的href告诉浏览器加载资源(在您的示例中,它是已加载的当前页面),然后向下滚动到该锚点。例如,如果页面上有<div id="foo">...</div>,那么导航到页面上的#foo,浏览器就会向下滚动,这样div就会显示出来。当你提供一个不存在的锚,滚动是不做的。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37640583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档