Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не работает addEventListener в iframe (https://javascript.ru/forum/misc/39021-ne-rabotaet-addeventlistener-v-iframe.html)

irvin12345 12.06.2013 15:35

не работает addEventListener в iframe
 
Столкнулся с проблемой: если фокус находится в iframe, то события не происходит. Подскажите почему? Обходные пути? Альтернативы?

(сохранить как 1.htm, запускать в chrome (при первом открытии ошибка соединения, но это к вопросу не относится, это моя лень. Лечится кнопкой "обновить страницу"))
<script>
var addr = "http://javascript.ru/"

function keys(e){
    alert("!");
}
    
function main(){
}

window.onload = function() {
    iframe = document.createElement("iframe");
    document.body.appendChild(iframe);
    iframe.style.width = "600";
    iframe.style.height = "600";
    iframe.onload=main;
    iframe.src=addr;
    document.addEventListener("keydown", keys, false);
}
</script>

danik.js 12.06.2013 15:51

Цитата:

Сообщение от irvin12345
Столкнулся с проблемой: если фокус находится в iframe, то события не происходит. Подскажите почему? Обходные пути? Альтернативы?

Событие происходит. Но внутри фрейма. Оно не поднимается в родительский документ. Нужно ставить обработчик на документ фрейма. Если фрейм отображает чужой домен - то вариантов нет вообще.

irvin12345 12.06.2013 16:31

Цитата:

Сообщение от danik.js (Сообщение 255884)
Если фрейм отображает чужой домен - то вариантов нет вообще.

Именно этот случай. А можно подробнее, почему так?

devote 12.06.2013 17:37

Цитата:

Сообщение от irvin12345
А можно подробнее, почему так?

Запрещено в целях безопасности, это можно конечно осуществить, но для этого чужой домен должен дать разрешение и/или использовать postMessage например.


Часовой пояс GMT +3, время: 21:09.