Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2015, 20:09
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

IE cross-window cross-domain messaging
Реально ли организовать обмен сообщениями между окнами с разных доменов в IE?
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2015, 20:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Octane,
Ну древний как мир кроссбраузерный метод - во фрейме создаем фрейм с домена с главной страницы и всовывая данные в window.name(Ну или динамически через hash ссылки )

Созданный внутренний фрейм по загрузке отдаёт данные на главную.

http://javascript.ru/ajax/cross-domain-scripting
Есть старый фреймворк dojo для кроссдомена

Последний раз редактировалось Deff, 07.07.2015 в 21:00.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2015, 23:29
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Пришел к такому решению:
  • site1.com открывает в iframe статичный файл site2.com/proxy.html
  • site1.com выполняет iframe.contentWindow.postMessage('open: site2.com', '*')
  • proxy.html в ответ на это сообщение выполняет win = window.open('site2.com')
  • proxy.html создает функцию win.crossPostMessage = function(data) { parent.postMessage(data, '*') }
  • site2.com выполняет window.crossPostMessage('json')
  • site1.com получает сообщение json

Последний раз редактировалось Octane, 08.07.2015 в 00:50.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2015, 00:04
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Octane,
Ну по идее, если флеш допустим, проще всего кроссобмен через флеш куки используя тот же dojo,
не нужны костыли вспомогательной страницы
==========================
Для перспективы, удобнее создать страницу на неком третьем домене на постоянной основе
со скриптом записи/cчитывания данных в localStorage по хешу ссылки (Возвращает данные через тот же хеш)
Для больших объемов данных(максимальный размер хеша ~ 2Кb) предусматриваем концевой спец. символ продолжения приема/передачи (достаточно просто, если использовать кодирование URIcomponent)

Последний раз редактировалось Deff, 08.07.2015 в 02:39.
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2015, 02:41
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Очень не хочется флеш

Мой вариант фигня, потому что window.open выполняется не в trusted event…
Хотя можно попробовать позиционировать iframe над кнопкой и по клику открывать окно.

Последний раз редактировалось Octane, 08.07.2015 в 03:09.
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2015, 03:42
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Deff
Для перспективы, удобнее создать страницу на неком третьем домене на постоянной основе
со скриптом записи/cчитывания данных в localStorage по хешу ссылки (Возвращает данные через тот же хеш)
В теории я себе это так представил:
- 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

Завтра попробую работоспособность.
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2015, 05:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ну по идее есть ещё событие смены хеш внутри фрейма для отслеживания начала передачи,
или старый метод, использования трех хешей:
#start, #data+данные, #stop;
В фрейме ставят два div #start и #stop разнесённые по высоте, отслеживаем onscroll при начале - конце посылки

Последний раз редактировалось Deff, 08.07.2015 в 05:22.
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2015, 13:27
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

чет не догоню про хэши фреймов, как это между окнами использовать
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2015, 16:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Octane,
Ну забить...
=================
я говорил о некой универсальной странице для подобных меssag
Которой кидают hash вида:
#data + ccылка на страницу(с нужного домена) для записи в Storage + данные
Универсальная страница создаёт(если уже не создан) внутри себя фрейм с этой ссылкой и перекидывает данные в hash указанной ссылки
=====================
Тогда было б два единых скрипта - для универсальной страницы и для страниц передающих данные в Storage на нужный домен
=====================
Хеш передача удобна при неоднократных месагах на определённый домен (чат к примеру), не нужно пересоздавать новый фрейм на универсальной странице

Последний раз редактировалось Deff, 08.07.2015 в 16:42.
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2015, 18:36
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

что-то трюк с localStorage пока что не получается, фреймы не синхронизируют localStorage, но последние изменения отправляются в соседнее окно с тем же адресом, событие вообще только в своем окне срабатывает

Последний раз редактировалось Octane, 08.07.2015 в 18:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cross domain ajax vyaceslav.kr jQuery 1 07.10.2012 09:11
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20