一站式百度SEO排名优化!-找老刘博客 低投入,高转化,精益求精、一丝不苟:旨在提供更好的SEO服务!

首页>>SEO技术

href属性中含"#"空链接对SEO有何影响,用处是什么?

首页 2019-09-30 SEO技术 2276 ℃Tags: 空链接 href#属性


写在开头:href="###"的样式大致可以看成是“空链接”,关于链接中的#号,目前百度对带#号URL的收录策略是:去掉#号后面的内容,仅对#号前面的url进行建库。这样就导致一些站长认为有意义有价值的页面,百度却无法收录,继而影响新链接的抓取和整体SEO效果。

href属性中含"#"空链接对SEO有何影响,用处是什么?

近期有一个客户的网站需要做SEO,但是又不想放弃href="###"的样式,实在无奈就只好给这些空链接加“nofollow”处理了,虽然操作麻烦了些但好歹减少了对搜索蜘蛛的影响。


所以站长在建站的时候对#号的使用一定要慎谨,百度站长平台不建议在有独特内容价值的url上使用#号!


<a> 标签 + οnclick='{jscode}' ,相比起 href='javascript:{jscode}'  ,前者能兼容多种浏览器对 <a> 标签的解释和处理不同。

而使用  <a> 标签 + οnclick='{jscode}'  时经常会加一个 href='###';


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

简单地说,

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

详细地说,

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

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

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


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


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

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


    1、使用3个#号,<a href="###" onclick="">链接</a>。

        为什么要用3个呢,不得其解。也没有查资料了,本来就是一个让人蛋疼的问题。。

        试了下使用两个#,ff和chrome下可以防页面跳动,IE8下页面依然跳页首(其他IE没有测试,应该也会跳动吧)。

        3个#,这几个浏览器就都能防页面跳动了。

        当然你如果不闲麻烦的话,使用4个#、5个#甚至更多#时,页面跳动现象也可解决。


    2、使用javascript:void(0),<a href=" javascript:void(0) " onclick="">链接</a>。

         这种写法曾经给我留下过深刻的印象,可让我吃过大苦头啊。


         它在各个浏览器下均可正常工作(这里的正常工作,指防止页面跳动)。但在IE6下它会防止页面整体刷新(ff、chrome、IE8下不会出现这样的状况,其他浏览器就不得而知了),所以你的onclick事件中如果有页面整体刷新这样的操作时,最好还是不要使用这种写法了。 当时就是因为涉世不深,导致了调此bug到深夜的痛苦经历,最终是在师傅的指导下解决了此bug。

        也许正因为它有防页面整体刷新的操作,在ajax的交互中用的比较多。

        至于javascript:void到底是个什么玩意,自己去baidu或google吧。懒得在这贴了。


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

         没什么可说的,至于为什么这样写可以做到防页面跳动,自己去探索吧。


无论是用#还是void(0),有一个共同的缺点在于:这样做就让这个行为,必须启用js才能实现。别笑,虽然说大多数人是加载js的,但也不能排除连接故障等意外,或真的有少数狂人不用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完全无法接受的问题……


搜索
分类
热门标签
  • 首页
  • 电话
  • QQ
  • 联系老刘手机
    1043025812
    联系老刘微信
    扫描微信二维码