单击链接时执行JavaScript

时间:2009-11-20 03:20:27

标签: javascript

哪个更好,假设我们不关心没有启用JavaScript的人?

<a href="#" onclick="executeSomething(); return false"></a>

或者

<a href="javascript:executeSomething()"></a>

有什么区别吗?

除了使用JavaScript库将事件附加到anchor元素之外,还有其他任何方法我都会丢失吗?

7 个答案:

答案 0 :(得分:7)

关于onclick的好处是你可以通过javascript禁用来优雅地处理浏览器。

例如,无论是否在浏览器中启用了javascript,下面的照片链接都会有效:

<a href="http://www.example.com/myPhoto.jpg" target="_blank" onclick="showPhoto(this.href); return false;">foobar</a>

答案 1 :(得分:4)

最好使用onclick,因为这就是事情的方式。

javascript:是模仿onclick的某种黑客方式。

另外,我建议您尽可能多地使用非侵入式Javascript,它会使代码更容易易于阅读以及更多可维护

答案 2 :(得分:4)

href="#"有许多不良副作用,例如在浏览器页脚中显示#作为目标网址,如果用户禁用了javascript,则会在点击时在网址末尾添加#链接。

最好的方法是IMHO将处理程序附加到代码中的链接,而不是HTML中。

var e = document.getElementById("#myLink");
e.onclick = executeSomething;

答案 3 :(得分:4)

这基本上是您想要遵循的模式:

  • 编写HTML标记
  • 从JavaScript附加事件处理程序

这是一种方式:

<a id="link1" href="#">Something</a>

<script type="text/javascript">
// get a reference to the A element
var link1 = document.getElementById("link1");

// attach event
link1.onclick = function(e) { return myHandler(e); };

// your handler
function myHandler(e) {
    // do whatever

    // prevent execution of the a href
    return false;
}
</script>

其他人提到了jQuery,它更健壮,跨浏览器兼容。

答案 4 :(得分:2)

最佳做法是将您的javascript与标记完全分开。这是使用jQuery的一个例子。

 <script type="text/javascript">
     $(function() {
         $('a#someLink').click( function() {
              doSomething();
              return false;
         });
     });
 </script>

 ...

 <a href="#" id="someLink">some text</a>

答案 5 :(得分:0)

是的我会同意使用onclick并将href完全从锚标签中删除...不知道你喜欢做什么但我喜欢在函数内部保留'return false'语句。< / p>

答案 6 :(得分:0)

主要区别在于:

  1. 默认情况下,浏览器假定href属性是字符串(目标网址)
  2. 浏览器知道在onclick属性中这是一些javascript
  3. 这就是为什么有些人指定浏览器“嘿,当你阅读这个超链接的href属性时解释javascript”做<a href="javascript: ... ;">...</a>

    要回答这个问题,那就是区别!

    OTOH使用javascript事件时的最佳做法是另一个故事,但大多数观点都是由其他人在这里制作的!

    由于