остановить событие нажатия клавиши внутри iframe

0

Я застрял с остановкой клавиши ENTER на входе внутри iframe.

Это работает, crossbrowser, на той же странице:

$("#input").keypress(function (event) {
    console.log(event.which); //works good
    if (event.which == 13) {
        return false;
    }
});

Это не работает, останавливая/захватывая событие нажатия клавиши внутри iFrame.

$("#my_iframe").contents().keypress(function (event) {
    console.log(event.which); // nothing loged
    if (event.which == 13) {
        return false;
    }
});

Что мне не хватает? есть ли крестообразный раствор?

скрипка

Теги:
iframe

2 ответа

3
Лучший ответ

Вы не ожидаете загрузки iframe перед прикреплением обработчика события.

  • 0
    Хм ... правда. Спасибо за дополнительную интеллектуальную мощь, чтобы увидеть это :)
  • 0
    Ну, это заняло у меня слишком много времени, я вижу. Стивен прав. Но ваша скрипка также пострадала от междоменной безопасности. Вот полное и рабочее решение jsfiddle.net/cM8yS/14 .
Показать ещё 1 комментарий
0

Как дополнение к Стивену Томасу ответ, вот хорошая статья, подводя итог тому, что проблема:

Прикрепление события к элементам формы внутри iframe с использованием jQuery

Однако, если вы попытаетесь обновить свою скрипту новым кодом, скорее всего, вы получите сообщение об ошибке:

Blocked a frame with origin "http://fiddle.jshell.net" from accessing a frame with origin "http://jsfiddle.net". Protocols, domains, and ports must match

Похоже, что jsfiddle использует два разных сервера для своей внутренней работы, и это противоречит политике "того же происхождения" - одним словом, вы не должны иметь доступ к DOM iframes с разных сайтов. Как меру безопасности, я думаю. Хотя я не знаю, можно ли как-нибудь пропустить это. ура

  • 0
    Спасибо за проверку этого тоже. Я отредактировал свою скрипку, чтобы больше не возникало междоменных проблем. http:// были вопросы, касающиеся этого

Ещё вопросы

Сообщество Overcoder
Наверх
Меню