如何在JavaScript中跟踪回调函数事件?

时间:2015-12-29 00:04:22

标签: javascript html events javascript-events callback

我最近为简单的JavaScript事件创建了一个简单的函数,它不需要addEventListener的所有功能。一切顺利,直到我需要跟踪事件(Internet Explorer之外)。虽然title似乎适用于IE和Chrome,但Firefox和其他一些浏览器并没有实现它。我试图弄清楚如何在下面这个例子中得到相同的结果。

目前此示例适用于返回事件对象的“测试按钮2”。我们如何修复addEvent函数以支持相同的行为?我没有运气就尝试了各种选择......

window.event
function addEvent (type, object, callback) {
  if (typeof object[type] != 'undefined') {
    var existingFunctions = object[type];
    object[type] = null;
    object[type] = function () {
      if (existingFunctions) {
        existingFunctions();
      }
      callback();
    };
  }
}

var testButton1 = document.getElementById("test1");

function callBack(event) {
	alert(event);
}

addEvent('onclick', testButton1, callBack); // This returns 'undefined' :(

var testButton2 = document.getElementById("test2");

testButton2.onclick = function(event) {
	callBack(event); // This works. 
}

1 个答案:

答案 0 :(得分:0)

由于缺乏使用简化的自定义事件监听器函数的答案,我最终回到使用addEventListener polyfill

为确保最近的浏览器不会出于任何原因加载此脚本,我仍然使用此简化的条件加载器在<head>中有条件地加载它:

// Event listener methods for IE8.
if (!Element.prototype.addEventListener && !document.body) {
     document.write('<script src="addEventListener.js"></script>');
}