IE cross-window cross-domain messaging
Реально ли организовать обмен сообщениями между окнами с разных доменов в IE?
|
Octane,
Ну древний как мир кроссбраузерный метод - во фрейме создаем фрейм с домена с главной страницы и всовывая данные в window.name(Ну или динамически через hash ссылки ) Созданный внутренний фрейм по загрузке отдаёт данные на главную. http://javascript.ru/ajax/cross-domain-scripting Есть старый фреймворк dojo для кроссдомена |
Пришел к такому решению:
|
Octane,
Ну по идее, если флеш допустим, проще всего кроссобмен через флеш куки используя тот же dojo, не нужны костыли вспомогательной страницы ========================== Для перспективы, удобнее создать страницу на неком третьем домене на постоянной основе со скриптом записи/cчитывания данных в localStorage по хешу ссылки (Возвращает данные через тот же хеш) Для больших объемов данных(максимальный размер хеша ~ 2Кb) предусматриваем концевой спец. символ продолжения приема/передачи (достаточно просто, если использовать кодирование URIcomponent) |
Очень не хочется флеш :(
Мой вариант фигня, потому что window.open выполняется не в trusted event… Хотя можно попробовать позиционировать iframe над кнопкой и по клику открывать окно. |
Цитата:
- site1.com открывает в iframe1 site1.com/proxy.html - site1.com открывает site2.com - site2.com открывает в iframe2 site1.com/proxy.html - site2.com выполняет iframe2.contentWindow.postMessage('json', '*'); - iframe2 получает сообщение json - iframe2 записывает это сообщение в localStorage - iframe1 получает сообщение json по событию storage - iframe1 выполняет parent.postMessage(json, '*') - site1.com получает сообщение json Завтра попробую работоспособность. |
Ну по идее есть ещё событие смены хеш внутри фрейма для отслеживания начала передачи,
или старый метод, использования трех хешей: #start, #data+данные, #stop; В фрейме ставят два div #start и #stop разнесённые по высоте, отслеживаем onscroll при начале - конце посылки |
чет не догоню про хэши фреймов, как это между окнами использовать
|
Octane,
Ну забить... ================= я говорил о некой универсальной странице для подобных меssag Которой кидают hash вида: #data + ccылка на страницу(с нужного домена) для записи в Storage + данные Универсальная страница создаёт(если уже не создан) внутри себя фрейм с этой ссылкой и перекидывает данные в hash указанной ссылки ===================== Тогда было б два единых скрипта - для универсальной страницы и для страниц передающих данные в Storage на нужный домен ===================== Хеш передача удобна при неоднократных месагах на определённый домен (чат к примеру), не нужно пересоздавать новый фрейм на универсальной странице |
что-то трюк с localStorage пока что не получается, фреймы не синхронизируют localStorage, но последние изменения отправляются в соседнее окно с тем же адресом, событие вообще только в своем окне срабатывает
|
Часовой пояс GMT +3, время: 19:47. |