Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   [javascript] [iframe] Вызов функции родительского фрейма (https://javascript.ru/forum/misc/14160-%5Bjavascript%5D-%5Biframe%5D-vyzov-funkcii-roditelskogo-frejjma.html)

resetnow 03.01.2011 19:30

[javascript] [iframe] Вызов функции родительского фрейма
 
Собственно, имеется IFrame, который по наступлению некоторого события должен передать некоторые данные в родительский документ.
Пробовал:
- top.func();
- вариации с parent

В любом случае в опере Security Error. Как бы провернуть передачу данных из IFrame родителю? Скорее всего, данный метод будет работать в других браузерах, но в опере система безопасности не позволяет. cross- document messaging? Если использовать его, то какие браузеры его поддерживают? не смог найти информации по поддержке cross- document messaging. Поддержка IE не нужна, если остальные поддерживают — и то хорошо.

вопрос — как передать данные из IFrame в parent?

p.s. http://javascript.ru/html5/postmessage/send.html отлично работает, только мне нужно не во фрейм, а из него. Так и не получилось реализовать, чтобы наоборот.

resetnow 03.01.2011 19:31

И да, собственно данные — document.location.href. Напрямую получить доступ не получается, тот же Security error.

Kolyaj 03.01.2011 19:44

Цитата:

Сообщение от resetnow
только мне нужно не во фрейм, а из него.

top.postMessage(...)

resetnow 03.01.2011 20:00

index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
<body>
<iframe src="iframe.html">
<script>
function listener(event){
alert(event.data);
}

if (window.addEventListener){
	window.addEventListener("message", listener,false);
} else {
	window.attachEvent("onmessage", listener);
}
</script>
</body>
</html>


iframe.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru">
<body>
123
<script>
top.postMessage('sample', "*");
</script>
</body>
</html>


не работает. вроде как и обработчик события находится на стороне, принимающей сообщение, а все не так что-то.

Kolyaj 03.01.2011 20:16

Тег iframe закрывать надо.

resetnow 03.01.2011 20:20

идиотская ошибка)
спасибо, тема закрыта.


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