У меня есть гибкое приложение, размещенное в домене A и обслуживаемое через веб-страницу в домене B. Я включил междоменный сценарий; на веб-странице домена B у меня есть строка
params.allowscriptaccess = "always";
и в коде приложения у меня есть
flash.system.Security.allowDomain("*");
и для хорошей меры,
flash.system.Security.allowDomain("keonehon.com"); // domain A
ExternalInterface
звонки, кажется, работают; при запуске приложение вызывает функцию javascript, а веб-страница вызывает функцию обратно для передачи параметра.
if (ExternalInterface.available){
ExternalInterface.call("SWFLoadComplete");
//lblMessage.text = "Data Sent!";
}
function SWFLoadComplete(){
callNewCarWithUser();
}
function callNewCarWithUser()
{
var user_id = document.getElementById('txtUserId').value;
var room_id = document.getElementById('txtRoomId').value;
getTheFlexApp().newCarWithUser(user_id, room_id);
}
И это работает правильно. Так что да. Кажется, работает нормально, нет?
ОДНАКО глубокое связывание не работает, так как установка параметра флекс #state=____
в URL (либо путем ввода чего-либо, либо путем перемещения назад с помощью кнопки назад) приводит к ошибке javascript в строке 435 из history.js
, он же
getPlayer().browserURLChange(flexAppUrl);
Кажется, что существует какая-то проблема междоменной безопасности, хотя я поставил строку flash.system.Security.allowDomain("*");
. Вы можете увидеть, что при одинаковом домене и кросс-домене наблюдается разное поведение, сравнивая две страницы с одинаковыми файлами html и swf, просто междоменный в одном случае и один домен в другом:
кросс-домен: http://keonehon.com/gongos/dreamcar.html.
тот же домен: http://rails.mit.edu/gongos/dreamcar.html
Что, черт возьми, происходит?