代码之家  ›  专栏  ›  技术社区  ›  at.

链接执行javascript代码的正确方式

  •  6
  • at.  · 技术社区  · 14 年前

    所以我知道有4种主要方法可以从一个链接执行javascript代码。对于我的要求,我需要这样做而不移动屏幕任何地方(链接到并且不返回错误是坏的)。SEO对于执行的javascript代码,如果可能的话,也很重要。那么,正确的方法是什么呢?

    方法1(需要确保mycode()始终返回false):

    <a href="#" onclick="return myCode();">execute</a>
    

    方法2(似乎最有意义?):

    <a href="javascript:myCode();">execute</a>
    

    方法3:

    <a href="javascript:void(0);" onclick="myCode();">execute</a>
    

    方法4(在语义上不像我认为的其他方法那样令人愉快):

    <span id="executeMyCodeLink" class="link">execute</a>
    <script>
    $('#executeMyCodeLink').click(myCode);
    </script>
    

    使用方法4,当然也可以使用onclick。

    6 回复  |  直到 11 年前
        1
  •  5
  •   Dave Aaron Smith    14 年前

    您使页面不跳转,并使用带有href的“a”标记和使用preventdefault的方法4。

    <a id="executeMyCodeLink" href="#">execute</a>
    <script>
      $('#executeMyCodeLink').click(function(event) {
        event.preventDefault();
        myCode();
      });
    </script>
    

    重要的是要包含一个href,因为链接样式不正确,您的HTML也不会验证。

        2
  •  4
  •   GSto    14 年前

    我喜欢方法4,但有两个不同之处:

    • 将脚本移动到单独的文件。不引人注目的javascript是快乐的javascript。
    • 使用a标记,链接到并返回false。
        3
  •  2
  •   Stephan Muller    14 年前

    <a href="#_"> 也可以,这样你就不需要 return false . (任何不存在的锚都会起作用)。

    另外,方法4只在使用jquery时才起作用。我的大多数网站只有一两个小的javascript效果,我没有为此加载jquery。

        4
  •  0
  •   user356808    14 年前

    使用jquery是处理javascript调用的一种不引人注目的方法。所以我想说方法4。你也可以这样做:

    $(a#linkId).click(...);
    
        5
  •  0
  •   Zafer    14 年前

    我也喜欢方法4。

    将事件单独绑定到DOM对象是一种更优雅的方式,我认为这是一种良好的编程习惯。

        6
  •  0
  •   prodigitalson    14 年前

    我也喜欢方法4。只要有可能,我尽量不要直接将任何东西放到偶数属性中,或者直接将JS写入到HREF中。我这样做是因为在大多数情况下,我会将非JS URL作为Href,因此对于非JS启用的浏览器,它会降低性能。第二个原因是我不喜欢用油垢污染元素:—)