Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Искусственное кросс доменное return. (https://javascript.ru/forum/misc/26831-iskusstvennoe-kross-domennoe-return.html)

ychetka 23.03.2012 22:55

Искусственное кросс доменное return.
 
Собственно в названии темы постарался отразить сущность вопросы, но не уверен попал или нет.
Значить ситуация такая, есть страница, в ней два iframe. Фреймы оба, принадлежать доменам, отличным от домена страницы. была поставлена задача реализовать прозрачное выполнение js (общение) фреймов с телом страницы. Из вариантов выбрал передачу данных через LSO (flash), был еще вариант
window.Postmessage
, но от него отказался из-за отсутствия поддержки со стороны IE 7. Теперь к сути вопроса.
Структура.
<html>
//.... head titile & others.
<body>
//... context
<iframe scr="site1.com"></iframe>
<iframe scr="site2.ru"></iframe> 
</body>


Внутри каждого iframe висит обработчик который получает данные от flash (SetInterval) и при необходимости исполняет код
setTimeout(code,1)
. Собственно подскажите как сделать возврат результата в тело основной страницы. Сейчас я могу сделать

send_to_frame_1('alert(222);');
- результатом станет alert, который выведет 222, код исполнится в контексте фрейма.
send_to_frame_1('send_to_home(alert(123););');
- результатом станет alert 123 который выполнится в контексте основной страницы. (отослал во фрейм, во фрейме вызвал отслыку в основное тело)

Во общем передача данных работает, но крайне неудобно, прошу поделится мыслями какова должна быть логическая конструкция обмена/исполнения данных. Ед. условие, чтобы как можно ближе к прозрачному js, вызвал функцию - получил результат ее исполнения.

vasa_c 24.03.2012 11:36

send_to_frame_2(code [, handler])

handler вызывается, после того, как срабатывае code.

ychetka 24.03.2012 12:34

Цитата:

Сообщение от vasa_c (Сообщение 164695)
send_to_frame_2(code [, handler])

handler вызывается, после того, как срабатывае code.

Ты имеешь ввиду получить результат из settimeout ?

vasa_c 24.03.2012 14:00

переданный в send_to_frame() код вызывается не сразу, а по таймауту.
следовательно ждать сразу ответа смысла нет - нужно ставить callback, если ответ нужно обрабатывать.
а как именно не знаю, какая там у вас архитектура.
наверное в той функции, которая по setInterval вызывается и исполняет код, результат этого кода получать и следует.

ychetka 25.03.2012 12:02

Есть ли способ исполнения строки в качестве кода, с возможностью возврата return ?


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