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

问题描述 投票:0回答:1

我最近为简单的JavaScript事件创建了一个简单的函数,它不需要所有的钟声和口哨声。addEventListener. 一切都很好,直到我需要跟踪事件(Internet Explorer之外)。当 window.event 似乎在IE和Chrome浏览器中有效,Firefox和其他一些浏览器没有实现它。我想知道如何在下面这个例子上得到同样的结果。

目前这个例子适用于 "测试按钮2",它返回的是事件对象。我们怎样才能解决这个问题呢?addEvent 函数来支持同样的行为?我尝试了各种选项,但没有任何运气... ...

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. 
}
<button id="test1">
Test Button 1
</button>

<button id="test2">
Test Button 2
</button>
javascript html events callback dom-events
1个回答
1
投票

由于缺乏关于使用简化的自定义事件监听器函数的答案,我最终还是回到了使用一个简单的事件监听器。addEventListener polyfill.

为了确保最近的浏览器不会无缘无故地加载这个脚本,我有条件地加载它,当它还在 <head> 使用这个简化的条件加载器。

// Event listener methods for IE8.
if (!Element.prototype.addEventListener && !document.body) {
     document.write('<script src="addEventListener.js"></script>');
}
© www.soinside.com 2019 - 2024. All rights reserved.