Присоединить событие к элементу iframe в родительском коде - PullRequest
4 голосов
/ 17 ноября 2010

В моем приложении есть iframe, и я хотел бы предоставить ему доступ к некоторым функциям, которые изменяют состояние приложения вне iframe.Эта функциональность должна быть вызвана событием keydown внутри или снаружи iframe.

В iframe у меня есть следующий код:

window.init = function (api) {
    api.bind(document);
};

А внешнее приложение выполняет что-то вроде:

iframe.contentWindow.init({
    bind: function (element) {
        $(element).bind('keydown', function () {
            debugger;
        });
    }
});

При этом init вызывается правильно, но обработчик события keydown никогда не вызывается.Что я делаю неправильно?

Ответы [ 2 ]

4 голосов
/ 18 ноября 2010

Если вы попытаетесь связать событие следующим образом:

    $(element).bind('keydown', function () {
        alert("hello");
    });

jquery попытается пройти ваш элемент в родительском window, но если вы сделаете следующее, ваша проблема будет решена:

    $(iframe.contentWindow.document.body).find(element).bind('keydown', function () {
        alert("hello");
    }); 
0 голосов
/ 18 ноября 2010

Проблема в том, что к какой-то части iframe уже подключен обработчик keydown, который останавливает распространение события, предотвращая достижение события документом и предотвращая вызов обработчика. Нет ничего плохого в фактической привязке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...