Доступ к глобальному объекту события в Firefox

Цель: запускать некоторые функции на .ajaxStart(), но только в том случае, если они вызваны определенным событием.

Код:

$('#loading_indicator').ajaxStart(function() {
    if(event != null){
            if(event.type == 'hashchange' || event.type == 'DOMContentLoaded'){
                $(this).show();
                $('#acontents').hide();
                $(this).ajaxComplete(function() {
                    $(this).hide();
                    $('#acontents').show();
                    bindClickOnTable();
                    initFilterInput();
                });
            }
    }
});

Проблема: это не работает в Firefox. В Internet Explorer и Chrome я могу с радостью получить доступ к объекту события, не передавая его в .ajaxStart(function(). Однако в Firefox объект события — undefined.

Очевидное, но неправильное решение: передать объект event в функцию. это не сработает, потому что пройдет событие ajaxStart и мои проверки больше не будут работать.

Вопрос: как сделать объект глобального события доступным внутри этой функции?


person Wilgert    schedule 27.03.2012    source источник
comment
Вы, вероятно, не должны. Если обратному вызову не передается объект события в Firefox, то, вероятно, он не запускается в ответ на событие :-) Скорее всего, это «ловушка» в коде, вызываемом напрямую (не через .trigger).   -  person David-SkyMesh    schedule 27.03.2012
comment
..оооо нет :-/. Из документации jQuery неясно, как ограничена область действия этой функции, но она определенно «запускается».   -  person David-SkyMesh    schedule 27.03.2012


Ответы (1)


Вы можете хранить объект события в любой переменной, которую можно использовать в другой функции.

Вот демо: http://jsfiddle.net/cVDbp/

person Paresh Balar    schedule 27.03.2012