event.target.content.loaderInfo выдает ошибку, если я получаю доступ к изображению из внешнего домена (SecurityError: Ошибка #2123)
Я работаю над OSMF-плеером. Я добавил логотип в верхнем правом углу моего плеера. Теперь я хочу открыть ссылку на клик логотипа.
Я написал код сценария Action в событии клика onMain
КОД:
private function onMainClick(event:MouseEvent):void{
if(event.target.hasOwnProperty("content"))
{
var info:LoaderInfo = event.target.content.loaderInfo;
var imageUrl:String = configuration.LogoImage;//Logo url to display on player
imageUrl = imageUrl.split("/").splice(1).join("/");
if(info.url.search(imageUrl) >= 0)
{
var url:String = configuration.LogoLink;//Logo link to open in new tab
var request:URLRequest = new URLRequest(url);
try
{
navigateToURL(request, '_blank');
}
catch(error:Error)
{
trace("Error occurred!");
}
}
}
}
Когда я даю URL логотипа из того же домена, он работает нормально (данный URL откроется в новой вкладке). Проблема возникает при доступе к изображению из внешнего домена. Домен, который не поддерживает запрос от моего домена.
Дополнительная информация: Изображение логотипа правильно отображается в правом верхнем углу моего плеера. При клике по логотипу URL я получаю ошибку ниже. Я предоставляю URL логотипа из моего конфигурационного файла
SecurityError: Ошибка № 2123: нарушение изолированной программной среды: Loader.content: http:///release/XYZPlayer.swf не может получить доступ к http://www.esnipe.com/shared/help_icon.gif. Нет доступа к файлам политики.
at flash.display::Loader/get content()
at StrobeMediaPlayback/onMainClick()
Пожалуйста, кто-нибудь может помочь мне выйти из этой ошибки.
1 ответ
Нет http://www.esnipe.com/crossdomain.xml файла, который предоставляет доступ к загруженному контенту.
Существует обходной путь для доступа к загруженному изображению bitmapData ( загрузка изображений профиля на VK.com в ActionScript), но при просмотре вашего кода вам просто нужно запомнить URL загруженного изображения. Попробуйте сохранить его где-нибудь, например, в локальной переменной или расширить флеш Loader
вашим пользовательским классом загрузчика и сохранить последний загруженный URLRequest
объект в этом.
Пример:
public class LoaderExt extends Loader
{
private var _request:URLRequest;
public function get url():String{return _request ? _request.url : null}
public function LoaderExt()
{
super();
}
override public function load(request:URLRequest, context:LoaderContext=null):void
{
_request = request;
super.load(request, context);
}
}