Ответ 1
Вот решение, которое сработало для меня. Я использовал этот ответ stackoverflow (fooobar.com/info/15138/...), чтобы создать следующую функцию, чтобы проверить, имеет ли объект определенный обработчик, привязанный к определенному событию.
Эта функция принимает имя функции, имя события и имя обработчика в качестве входных параметров и возвращает true/false, если функция привязана к событию на переданном объекте.
function testHandler(obj, sEvent, sHandlerName)
{
var retVal = false;
// Get all events bound to object
var windowEvents = jQ._data(obj, "events");
// Get all handlers for a specific event
var handlers = windowEvents[sEvent];
jQ(handlers).each(function() {
// Using passed name to see if there is a match
if(this.handler.name === sHandlerName)
{
retVal = true;
return;
}
});
return retVal;
}
Затем вызовите функцию следующим образом.
// Test if there is a beforeclose() handler bound to the window objects
// "beforeunload" event
testHandler(window, "beforeunload", "beforeclose");
Вы даже можете проверить, есть ли анонимный обработчик, прикрепленный к событию. В приведенном ниже вызове "this" ссылается на кнопку, и мы проверяем, есть ли анонимный hanlder, прикрепленный к кнопкам click event
testHandler(this, "click", "anonymous");