Вы должны записать порядок возникновения. JavaScript по умолчанию не запоминает цепочки событий так, как вы описываете, просто потому, что вы можете запускать их в любом порядке, так что это будет бесполезной особенностью языка.
В принципе, при запуске события клика вам необходимо записать, что он выстрелил. Основная реализация - использовать булевский флаг.
var clickFired = false;// by default it is false.
document.addEventListener('click', function(event) {
clickFired = true;
}, false);
document.addEventListener('keydown', function(event) {
if (clickFired) {
alert('key pressed after click');
} else {
alert('key pressed before click');
};
};
JavaScript только запоминает несколько очень специфических событий. Он знает, является ли или нет ctrlKey
, altKey
, shiftKey
или metaKey
прессовали в то время, когда событие было запущено, помнит правила пузыря, фазы выполнения триггера, цели и еще несколько вещей, которые вы можете увидеть, набрав:
var clickFired = false;// by default it is false.
document.addEventListener('click', function(event) {
console.dir(event);//Firebug command.
clickFired = true;
}, false);
Кроме того, beware, управление событиями, совместимыми с перекрестным браузером, к сожалению, не является ничтожным для достижения вообще. Различные браузеры имеют дело с событиями по-разному. Основным примером будет то, что Internet Explorer использует attachEvent()
, а не addEventListener()
. ~
Если вы пишете код для производственной среды, я бы порекомендовал вам использовать библиотеку какой-то формы, чтобы сделать вашу жизнь намного проще. В противном случае вам просто придется изобретать колесо, которое является удивительным для учебных целей, но вы можете найти его утомительным и трудоемким. Если вы действительно не знаете свой путь вокруг JavaScript, писать исходный код не подходит для чего-то, что вы хотите, чтобы другие люди использовали сразу.