Есть ли в JavaScript способ переопределить событие, но по-прежнему вызывать исходный код события? Я в основном хочу добавить одну строку кода в конец. Так например:

Исходная функция

function DropDownList_OnFocus(a, b) {
    // Original Code
}

Что мне нужно

function DropDownList_OnFocus(a, b) {
    // Original Code
    // New Code        
}
0
Scott Hulme 29 Янв 2016 в 14:41
Так вы хотите обновить обработчик событий, а не само событие? почему бы просто не добавить еще один обработчик событий для того же события?
 – 
gurvinder372
29 Янв 2016 в 14:44
Привет @ gurvinder372, это правильно, однако мне нужно убедиться, что дополнительный код выполняется после исходного события. Я думаю, что добавление еще одного обработчика событий в некоторых случаях может привести к непредсказуемым результатам.
 – 
Scott Hulme
29 Янв 2016 в 14:50
1
Если ваши обработчики событий не имеют асинхронной обработки, они будут выполняться в порядке добавления к событию stackoverflow.com/questions/18821625/…
 – 
gurvinder372
29 Янв 2016 в 14:52

2 ответа

Обработчики событий всегда выполняются последовательно в том порядке, в котором они были связаны.

Таким образом, вы можете просто добавить другой обработчик событий для того же события в тот же элемент и поместить дополнительный / оставшийся код во второй обработчик событий.

0
Mukesh Saini 29 Янв 2016 в 15:08

Мне удалось заставить его работать, используя следующее:

var base = DropDownList.OnFocus;
var DropDownOnFocusOverride = (function () {
    return function () {
        base();
        // Additional Code
    }
});

DropDownList.OnFocus = DropDownOnFocusOverride();
0
Scott Hulme 29 Янв 2016 в 18:21