【发布时间】:2013-07-09 21:53:05
【问题描述】:
我必须在原始 onclick 事件触发之前调用另一个函数,在找到以下解决方案之前我已经尝试了很多不同的路径:
function bindEnableFieldToAllLinks() {
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
var link = links[i];
var onclick = link.getAttribute('onclick');
link.onclick = new Function("if(linkClickHandler()){"+onclick+"}");
console.log(link.getAttribute('onclick'));
}
}
这在 Firefox 和 chrome 中可以解决问题,但 IE8 的行为很奇怪,似乎 onclick 变量中的函数没有执行,
我已经添加了在 if 语句为真之后触发的 console.log 消息,如果我打印出 onclick 属性,我会得到以下信息:
LOG: function anonymous() {
if(linkClickHandler()){function onclick()
{
if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('hoedanigheidForm'), {'hoedanigheidForm:j_id_jsp_443872799_27':'hoedanigheidForm:j_id_jsp_443872799_27'},'');}return false
}}
}
因此,该功能似乎在链接的 onclick 上,并且旧的 onclick 功能也在它上面。
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
-
您可以使用 addEventListener 并根据需要添加任意数量的事件处理程序,而不是使用 onclick 并尝试在同一事件中绑定 2 个方法...
-
@Givi addEventListener 在 IE8 中不受支持
-
@RayNicholus 是的,如果他想要跨浏览器解决方案,你是对的,使用 addEventListener 和 attachEvent 编写自定义函数很容易
标签: javascript javascript-events event-handling