如何在JavaScript中跟踪回调函数事件
How to track callback function events in JavaScript?
我最近为简单的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>
由于缺乏关于使用简化的自定义事件侦听器函数的答案,我最终返回使用addEventListener polyfill。
为了确保最近的浏览器不会无缘无故地加载这个脚本,我在<head>
中使用这个简化的条件加载器:有条件地加载它
// Event listener methods for IE8.
if (!Element.prototype.addEventListener && !document.body) {
document.write('<script src="addEventListener.js"></script>');
}
相关文章:
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定