Я понятия не имею, почему ваш код не работает, но он слишком сложен - это должно сработать:
document.observe('keydown', myEventHandler);
Нет необходимости ждать load
, так как document
доступен немедленно.
Ваш код не работает, потому что не все ключевые события происходят из элемента body документа. У Opera есть проблемы, похожие на те, что есть в Firefox, но исходный элемент, кажется, дополнительно зависит от расположения курсора мыши.
В любом случае, исправление состоит в том, чтобы просто ловить события на уровне document
, потому что, пока никто не мешает им делать это, все события DOM в конечном итоге будут пузыриться до document
.