href属性中含”#”空链接的用处是什么?值得我们去修改吗?

href=”###”的样式大致可以看成是“空链接”,关于链接中的#号,目前搜索引擎对带#号URL的收录策略是:去掉#号后面的内容,仅对#号前面的url进行建库。这样就导致一些站长认为有意义有价值的页面,搜索引擎却无法收录,继而影响新链接的抓取和整体SEO效果。其实很多网站都带有这些链接的。那么href属性中含”#”空链接的用处是什么?值得我们去修改吗?

href空链接

超链接中 href=’#’ 和 href=’###’ 的区别是什么呢?

简单地说,如果想定义一个空的链接,又不跳转到页面头部,可以写href=”###”。

详细地说

‘#’ 是有特定意义的,如果 ‘#’ 后有内容会被认为是一个标签而从页面找到相应标签跳转到该处,找不到时会跳到页首;

‘###’ 是一个无意义的标签指定,也就是一个 ‘#’ 和不存在的标签 ‘##’ 的组合,页面中找不到命名为 ‘##’ 的<a>时该链接就不会发生跳转,也就不会导致执行 onclick 中的内容时突然发生页面跳到页首的问题;

“###”主要是防页面跳动。从其它意义来说,只是一种使用者习惯,如果愿意,可以随便找一个跳转不到的标签作为命名。

说白了”###” 就是一个不是锚点的字符串,浏览器找不到也不会跳到页首,原理就是依赖了网页的报错机制,找不到就不做处理。以前空链接的href属性通常使用”#”来填充,但当页面出现滚动条时,点击空链接,页面会跳动到页首,给人的感觉很不爽。

为什么当用”#”填充空链接时会出现页面跳动的现象?

原因是”#”被默认为锚点”#top”,即跳转到本页页首。查找了下资料, 以下为自己尝试过的3种解决办法:

1、使用3个#号,<a href=”###” onclick=””>链接</a>。为什么要用3个呢,不得其解。也没有查资料了,本来就是一个无法理解的问题。

2、使用javascript:void(0),<a href=” javascript:void(0) “onclick=””>链接</a>。它在各个浏览器下均可正常工作(这里的正常工作,指防止页面跳动)。很多网站都在使用这个标签,尤其是轮播图的地方。

3、在onclick事件函数中使用return false,<a href=” # ” onclick=”return false”>链接</a>。

无论是用#还是void(0),有一个共同的缺点在于:这样做就让这个行为,必须启用js才能实现。另外,js不能被搜索引擎所跟踪,这是个需要考虑的问题。

从这个意义上讲,#甚至更差一些,因为单独的#在语义上,其实隐含着指向了网页自己,如果使用“在新标签页中打开”时就会产生迷惑。而这个问题void(0)没有。

所以最好能做到以下二者其一:

href属性指向一个真正的单独的页面。让业务功能在没有js时,通过跳转页面也能实现,只不过js能实现的更加优雅(例如用ajax做无刷新更新,或用lightbox做网页内弹出小窗口)。如果实在没有js不行,那就把功能链接在加载网页时暂时隐藏,等到js就绪了再真正显示出来。

注:其实真正不好的写法是<a href=”javascript:void(0)” onclick=”functionclick();”>,真正的在html中混杂js行为,让html的工作者时刻做“别把哪段js不小心删了”这种不必要的担心。正确的做法应该是对<a>定义id属性,然后通过id后绑定click等事件。

网址带#的链接过多是一件让用户无法接受的问题, 蜘蛛无法抓取这种类型(中间含有#号)的网址。蜘蛛看到#,后面的东西就基本上不抓了,另外网址里含有#是件让部分SEOer无法接受的问题。

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享