![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jul 2010
Сообщений: 2
|
Всем привет,
сразу оговорюсь: я не Flash-разработчик, просто столкнулся с проблемой при написании крохотного приложения для тестирования страницы, содержащей Flash-объект. Решения никакого выгуглить не удалось... Итак, что надо: 1) С домена domainA загружается страница, которая внутри себя содержит 2 javascript-функции: getDataAsJSON(id) и updateResponse(id, value) - первая служит для получения некоторых данных со страницы Flash-приложением, вторая - для установки им некоторых результирующих значений. 2) На странице размещён object-тэг, загружающий Flash-приложение с другого домена, domainB. Вот HTML, в который он рендерится для IE 8: <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="flash_q17" name="flash_q17" width="400" height="300">
<param name="movie" value="http://domainB/Test.swf" />
<param name="allowScriptAccess" value="always"/>
<param name="allowNetworking" value="all"/>
<param name="swliveconnect" value="true"/>
<param name="allowFullscreen" value="false"/>
<param name="play" value="true">
<param name="menu" value="false"/>
<param name="quality" value="high"/>
<param name="flashvars" value="questionKey=q17"/>
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
</object>
tbxInput.text = ExternalInterface.call("getDataAsJSON", "abcdefg").toString(); ExternalInterface.call("updateResponse", "abcdefg", "123456"); a) когда domainA == domainB, всё великолепно работает (локально и удалённо) б) когда domainA != domainB, но оба хостятся физически на одном сервере (в одной файловой системе, например myserver/domainA и myserver/domainB), то при вызове из локального браузера (т.е. когда для мена myserver == localhost) всё работает; при удалённом вызове - нет (tbxInput пустой, "updateResonse" тоже не вызывается, никаких видимых ошибок в браузер не выводится - просто приложение загружается пустым и нерабочим). в) если я в Global Security Settings Panel разрешаю всё обоих доменов, всё снова работает (точно вкладку не скажу, кажется, вот эта имела решающее значение: http://www.macromedia.com/support/do...manager04.html) Проблема в том, что не могу же я конечному пользователю предлагать идти по какой-то там ссылке и настраивать права доступа для каждого Flash-приложения. В реальной production-системе они будут просто загружаться по внешним ссылкам, т.е. я никакого участия в их разработке принимать не буду, моя задача - отрендерить для них валидный контейнер, а также пропихнуть внутрь приложения инициализирующий данные и получить на выходе некоторый value. Если с первой задачей я, допустим, могу справиться, сериализовав все входные данные в строку и запихнув её во flashVars (что в принципе уже не слишком хорошо), то со второй задачей так не поступить, поскольку value должен вернуться в js текущей страницы для дальнейшего использования. В общем, мне надо как-то обойти эти нелепые ограничения безопасности. Придумал пока разве что разместить в domainA HTTP-хэндлер, который внутри себя будет загружать приложение и отдавать его в респонс (короче, прокси). Но это же бред - такую тривиальную, вроде бы, задачу, таким образом решать... Буду благодарен любым подсказкам/комментариям. Последний раз редактировалось wvxvw; 28.07.2010 в 22:06. |
|
|||||
|
Подсказка:
flash.system.Security.allowDomain("мой домен") Комментарий: Таким образом Вы разрешаете внешним объектам с указанных доменов обращаться к Вашей swf-ке
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Jul 2010
Сообщений: 2
|
Цитата:
В любом случае, пробовал Security.allowDomain("*") - не помогло. Добавлено через 1 час 15 минут Блин, вообще мистика какая-то... 10 раз подряд загрузил страницу, содержащую Flash-объект - в трёх случаях загрузилась нормальная рабочая флэшка, вызывающая js-код, а в остальных - "пустышка". Может, я созданием флэшки где-то накосячил? Это ничего, что я код положил просто в первый фрейм единственного слоя? Последний раз редактировалось vo1d; 28.07.2010 в 22:31. |
|
|||||
|
Modus ponens
|
vo1d: Код нужно оформлять тегами [code][/code].
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|