我最近为简单的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.
}
答案 0 :(得分:0)
由于缺乏使用简化的自定义事件监听器函数的答案,我最终回到使用addEventListener polyfill。
为确保最近的浏览器不会出于任何原因加载此脚本,我仍然使用此简化的条件加载器在<head>
中有条件地加载它:
// Event listener methods for IE8.
if (!Element.prototype.addEventListener && !document.body) {
document.write('<script src="addEventListener.js"></script>');
}