0

我正在尝试以编程方式确定元素的 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,这是错误的。
4

1 回答 1

0

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

于 2012-12-11T13:00:39.937 回答