Добавление обработчика событий в iframe с использованием JQuery - PullRequest
9 голосов
/ 14 февраля 2009

Я хочу назначить обработчик события keydown для iframe. Нечто похожее на чистый JS:

document.getElementById('iframe_id').contentWindow.addEventListener('keydown',funcName, true);

Я пытался:

$(document.getElementById('iframe_id').contentWindow).keydown( function() {
   // my func
});

Но это не работает .. Пожалуйста, помогите!

Ответы [ 4 ]

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

contentWindow - это объект iframe window. Вы хотите iframe document вместо:

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() {
    // my func
});

Обратите внимание, что я не уверен, как jQuery реагирует на элементы из других окон / фреймов.

4 голосов
/ 08 апреля 2010

Просто кое-что, о чем нужно помнить: насколько я понимаю, это никогда не сработает, если контент iframe является междоменным. Вы получите ошибки разрешений: разрешение http: //... не разрешено для получения свойства HTMLDocument.nodeType из http: //.... Браузеры ограничивают разрешения родительского дочернего домена тем же доменом.

0 голосов
/ 14 июля 2014

Это сработало для меня:

$('#iframe_id').contents().keydown(function() {
    // my func
});
0 голосов
/ 14 февраля 2009

Функция $ заменяет необходимость в document.getElementById

$('iframe_id').contentDocument.keydown(function() {
   // logic
});
...