window.frames [0] .document.onkeydown не работает в Firefox - PullRequest
0 голосов
/ 09 января 2012

У меня эта строка не работает в Firefox (прекрасно работает в IE и Chrome)

ste.frame.document.onkeydown=function(e) {
    alert('a');
};

здесь ste.frame - объект окна [объект Window]. Я пытался

window.frames[0].document.onkeydown=function(e){
    alert('b');
}

Также работает в IE и Chrome и не работает в Firefox. Я думаю, если второй работает, первый тоже будет работать.

Кто-нибудь знает, как решить эту проблему? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Код, который вы разместили в комментариях выше, не работает, потому что вы настраиваете слушателя до того, как субфрейм завершит загрузку своего about: blank document.Таким образом, вы устанавливаете прослушиватель на временный документ, который затем исчезает.

Gecko, вероятно, изменит здесь поведение в какой-то момент, чтобы более точно соответствовать тому, что вы видите в IE и WebKit, теперь, когда спецификация HTML5 фактически определяеткак насчет: пустой должен вести себя ....

0 голосов
/ 10 января 2012

Я потратил почти час, чтобы найти решение, но не смог. Я думаю, причина в том, что фундамент Mozilla внедрил только основы объекта IFrame, поэтому вы не можете назначить обработчик событий. По сравнению с обработчиком событий вы можете изменить стили CSS (см. Этот пример ).

window.frames [0] .document.onkeydown = функция (е) { предупреждение ( 'б'); }

Я использовал DOM-Inspector, чтобы выяснить, на какой объект указывает этот код. На мой взгляд, это указывает на глобальный объект DOM Firefox.

PS: Если я ошибаюсь, поправьте меня, пожалуйста.

...