Это можно сделать без использования рамок, которые всегда громоздки и медленны. Хитрость заключается в том, чтобы записать, какое событие произошло в какой момент времени, а затем, помимо этого, сработать в течение определенного периода времени. Когда вы запускаете событие keypress
, событие click
запускается сразу после этого, вот список того, как быстро событие click
запускается после события keypress
...
Chrome 39,0 : 0 мс
Firefox 31.0 ESR : 18 ~ 20 мс
IE 11 : 2 ~ 4 мс
Опера 12,1 : 0 мс
Chrome и (настоящая) Opera не ждут, IE работает достаточно быстро, а Firefox так сказать; диапазон для работы (по крайней мере, в моей системе) составляет 0 ~ 20 мс. Программно я установлю ограничение в 50 мс для людей, все еще использующих ненужные компьютеры, которые слишком заняты 150 бесполезными процессами в фоновом режиме.
Обратите внимание, что вам придется использовать события window
глобального уровня, хотя, похоже, это работает надежно для меня во всех браузерах, которые я упомянул.
var option = new function() {this.name = '';}
window.onclick = function(event)
{
option.clickDate = new Date().getTime();
}
window.onkeypress = function(event)
{
option.keyCode = event.keyCode;
option.keyCodeDate = new Date().getTime();
}
function MyFunc(e,obj)
{
if (option.keyCodeDate && option.clickDate &&
(
(option.clickDate - option.keyCodeDate)>=0 &&
(option.clickDate - option.keyCodeDate)<51)
{alert('keypress event');}
else {alert('click event');}
}