Я застрял с остановкой клавиши 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 перед прикреплением обработчика события.
Как дополнение к Стивену Томасу ответ, вот хорошая статья, подводя итог тому, что проблема:
Прикрепление события к элементам формы внутри 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 с разных сайтов. Как меру безопасности, я думаю. Хотя я не знаю, можно ли как-нибудь пропустить это. ура
http://
были вопросы, касающиеся этого