0

我有以下代码

var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  elements[i].onclick = function () {
   return confirm_exit('".$_SESSION['SES_abr_langue']."');
  }
}

我需要将 onclick 附加到现有的 onclick 事件(如果存在)。

当我elements[i].onclick在 function() 中添加时,它只是“硬编码”它。这意味着它从字面上放置 elements[i].onclick 而不是 onclick 的值。

谢谢!

4

1 回答 1

4

尝试使用 addEventListener:

function onLinkClick() {
    return confirm_exit('".$_SESSION['SES_abr_langue']."');
}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  if (elements[i].addEventListener) {
    elements[i].addEventListener("click", onLinkClick, false);
  } else if (elements[i].attachEvent)  {// for < IE9
      elements[i].attachEvent("onclick", onLinkClick);
  }
}

编辑

如果您想控制原始的 onclick,请使用以下命令:

function createLinkEvent(orgOnClick) {
    return function(e) {
        if (!confirm_exit('".$_SESSION['SES_abr_langue']."')) {
            return false;
        }
        if (orgOnClick) {
            return orgOnClick(e);
        }
        return true;
    };
}


}
var elements = parent.document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
  elements[i].onclick = createLinkEvent(elements[i].onclick);
}
于 2013-04-23T17:03:43.937 回答