大家谈谈 Javascript:void(0) 和 ### 之争? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
hzlzh
63.67D

大家谈谈 Javascript:void(0) 和 ### 之争?

  •  
  •   hzlzh
    PRO
    hzlzh Sep 22, 2012 6951 views
    This topic created in 4964 days ago, the information mentioned may be changed or developed.
    至于 <a href="" 中使用 Javascript:void(0) 还是一个 # 号之争可以看下面的老帖:
    http://stackoverflow.com/questions/134845/href-attribute-for-Javascript-links-or-Javascriptvoid0

    本次要讨论的是三个井号的使用,###,到底好不好?大家随意~不要跑题

    页面切图完成到交互之前,使用<a href="###">,部分的确成品也使用###留空,防止页面滚动。
    16 replies    1970-01-01 08:00:00 +08:00
    explon
        1
    explon  
       Sep 22, 2012
    三井号不滚动有什么渊源么?
    POPOEVER
        2
    POPOEVER  
       Sep 22, 2012
    @explon 相当于空锚点?
    NemoAlex
        3
    NemoAlex  
       Sep 22, 2012
    如果没有可替代的 url,我一般都不加 href
    keelii
        4
    keelii  
       Sep 23, 2012
    Javascript:; 比 Javascript:void(0); 简洁一些,一直用这个。用锚链接总感觉不干净^!^
    chloeri
        5
    chloerei  
       Sep 23, 2012
    unobtrusive Javascript,href 放实际链接。
    chrisyipw
        6
    chrisyipw  
       Sep 23, 2012
    都不选择。

    如果是切图时的占位符,# 就好。

    如果不依赖 href 的用途,比如一个不跳转、没有 ajax 的按钮,那该用 button 等语义元素,cursor: pointer 即可。

    如果依赖 href 的内容,比如 Twitter timeline 的用户名是真实 URL,<a href="/username" >,这样用鼠标中键点击时,可以正常地打开新页面,左键点击时,就是 ajax 的 popup。
    hzlzh
        7
    hzlzh  
    OP
    PRO
       Sep 23, 2012   1
    @keelii 用 Javascript:; hover之后,浏览器上的提示更闹心。另外,###的使用没有弊端吧。

    @chrisyipw 讲的很对,另一中情形:如果要依赖a标签自带的css样式,也就是复用cursor: pointer 这个效果,非要做出一个hover,用###是不是一种可行的补救方法。
    hzlzh
        8
    hzlzh  
    OP
    PRO
       Sep 23, 2012
    @chloerei 的确,href中放Javascript 的事情还是要慎重,至少我本人不这样做
    daweiba
        9
    daweiba  
       Sep 23, 2012
    Onclick="return false"的飘过...
    chrisyipw
        10
    chrisyipw  
       Sep 23, 2012
    @hzlzh 复用 CSS 也只是多打一些字符,即使没有 gzip 也不会对速度造成的影响。按照分离职责的原则,HTML 是内容,CSS 是呈现,不应该用内容来「折衷」,在实际场景上也可能很不妥:

    现在大部分浏览器都会在悬停时显示链接的 href,我个人挺讨厌「http://www.v2ex.com/t/48511#;」这样的 href,因为一看就知道是 JS,不是实际 href,除了浪费感情之外,也无从知道想要的信息,比如 comment ID。
    然后来看看移动设备,没有了悬停效果,自然不会知道这个看上去像链接的东西到底是不是链接。
    在各种未知影响下,有可能 JS 加载或执行失败了,此时点击「看上去像链接」的链接时,因为是假 href,自然不能达到用户的预期效果,给用户带来很大的困扰。
    再从另一方面来看,以 Twitter timeline 为例,假设 JS 是可以正常加载和正常执行,但是呢,网速很慢或者优化不足或者请求数过多(iOS 并发数不多),JS 加载时间很慢,如果此时 HTML 加载好了,并且我看到了我想要看的一个用户的名字,如果是真实 href 的话,我可以直接点名字就跳过去了,不必等 JS 加载好再点再等加载。
    结合上面两个场景,再由于 href="###" 实际上会造成页面刷新,在移动设备上点击了一个 href="###" 后又没有 JS 来 preventDefault(),我的话,很可能直接关掉页面。
    keelii
        11
    keelii  
       Sep 23, 2012
    @hzlzh 我感觉凡是样式设置成 cursor: pointer 的元素都有加链接去向的需求,我般直接用a了,用a标签的好处可以全兼容加 hover 的样式哇。void(0)也是在有Ajax请求的时候才会用到。不过我记得<a href="Javascript:void(0);"></a>链接响应 form.submit() 请求的时候在IE 6里面会有问题。而且貌似还不能加行内的事件吧?
    yangg
        12
    yangg  
       Sep 23, 2012
    @hzlzh ###是有问题,之前觉得这个短一点,就使用了,结果之前一次调了半天,结果竟是它的原因,不过具体的情况记不清了。。。
    hzlzh
        13
    hzlzh  
    OP
    PRO
       Sep 23, 2012
    @yangg 最好能起来具体问题是什么,不然还是不能驳倒 ### 不是好解
    hzlzh
        14
    hzlzh  
    OP
    PRO
       Sep 23, 2012
    @chrisyipw
    我个人推崇的是极致的做法,HTML CSS JS完全分离。下面具体说:
    HTML:只包含所有的HTML标签和TEXT,坚决杜绝下列情形:
    1. <script>xxx</script>
    2. <a href="Javascriptxxxxx">yyy</a>
    3. <p style="xxx:xxx">yyy</p>
    4. <style type="text/css">yyy</style>
    5. Google 统计代码这样的内联JS除外
    -------
    对于不用###的实现点击事件失效,我用干掉 preventDefault()来达成,但是我依然把###的做法划分到了完美解决方案的一种。
    -------
    其实届时内容 样式 交互 分离而已,实践起来,坚持的人就不错了。
    cc @keelii
    clowwindy
        15
    clowwindy  
       Sep 23, 2012
    1. # 会改变当前 URL。我刷新网页习惯激活地址栏按回车,而不是点刷新(前者更快,因为只请求网页本身),有 # 的时候得把 # 去掉才行。
    2. # 会插入一条历史记录,造成后退时得多点一次。
    3. 如果你不需要 href,为什么要用 a 标签?
    hzlzh
        16
    hzlzh  
    OP
    PRO
       Sep 23, 2012
    @clowwindy 答:
    1. 关于地址栏的URL被更改,我有考虑到,于是写了下面这个script解决了 #的情形,### 目前继续更改地址栏URL
    https://github.com/hzlzh/Anchor-Scroll
    2. 历史记录在所难免,劣势了
    3. 有的时候href是html预留出来的,之后PHP或python语言返回的value 可能是URL可能是/,也能是#来占位。另外也有之前我说过的问题,仅仅是因为懒想复用a标签的鼠标样式而已。
    About     Help     Advertise     Blog     API     FAQ     Solana     4211 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 64ms UTC 05:28 PVG 13:28 LAX 22:28 JFK 01:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86