Javascript:检查onClick是否被触发

时间:2012-12-11 12:52:34

标签: javascript javascript-events onclick

我正在尝试以编程方式确定是否触发了元素的onClick事件。 例如,如果元素被禁用,则不应触发事件。 这就是我想出来的:

function check(elm) {
   elm.exonclick = elm.onclick;
   var clicked = false;
   elm.onclick = function(oEvent) {
      clicked = true;
      if (elm.exonclick) elm.exonclick(oEvent);
   };
   elm.click();
   elm.onclick = elm.exonclick;
   elm.exonclick = undefined;
   return clicked;
}

所以在这种情况下函数应该返回true:

<a onClick="foo(); bar();" />

在这种情况下它应该返回false:

<a onClick="foo(); bar();" disabled="disabled" />

但我有两个问题:

  1. 由于某种原因,表达式elm.exonclick = elm.onclick始终为空。
  2. 我的自定义onclick函数在两种情况下都被触发,即使它不应该。因此,两种情况都返回true,这是错误的。

1 个答案:

答案 0 :(得分:0)

关于你问题的第一点。请注意,如果单击处理程序不会内联(在html代码中)或使用someelement.onclick = function() {...}注册,您将无法访问处理程序。在您的情况下,您使用的是onClick属性,然后请求onclick(小写),这可能就是为什么它为空。