В Dojo или Javascript, как заставить мой обработчик событий запускаться раньше других обработчиков событий? - PullRequest
0 голосов
/ 10 февраля 2009

В библиотеке Dojo Javascript я понимаю, как использовать dojo.connect или dojo.publish для подключения моего обработчика событий к событию. Эта функциональность прекрасно работает.

Но я хочу сделать еще одну вещь.

Я хочу, чтобы мой обработчик событий запускался первым, перед любыми другими уже определенными обработчиками событий. Я полагаю, это можно назвать «вставкой обработчика события» или что-то в этом роде.

Есть ли способ сделать это в Додзё или удобный и элегантный способ в простом Javascript?

Ответы [ 4 ]

1 голос
/ 10 февраля 2009

Попробуйте изменить событие так:

function alertTest(){
    alert('test');
}

function alertTest2(){
    alert('test2');
}

window.onload = alertTest2; //just setting it to simulate that an event
                            //is already set

oldOnload = window.onload; //store the old event into a temporary variable
window.onload = function() { //assign a new function to the event
    alertTest(); //whatever your "must happen first" function is
    oldOnload.apply(); //run the original event after
}
0 голосов
/ 11 февраля 2009

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

0 голосов
/ 10 февраля 2009

У меня была (возможно) связанная с этим проблема, и я использовал setTimeout для установки флага.

Событие размытия javascript - есть ли способ определить, какой элемент теперь имеет фокус? некрасиво, но это работает.

0 голосов
/ 10 февраля 2009

Когда события запускаются, они подключаются к своему действию (onload, onclick). Итак, как бы вы запустили событие, прежде чем будут запущены другие действия?

Например, как бы вы запустили событие перед onclick, если не знаете, когда оно будет запущено?

Это определенно то, что вы не можете сделать, возможно, вы хотите зарегистрировать обработчики для события onload, которое обычно запускается раньше всех остальных.

...