2013-06-04 1 views
0

Я работаю над проигрывателем на OSMF. Я добавил изображение логотипа в верхнем правом углу моего плеера. Теперь я хочу открыть ссылку на клик логотипа.event.target.content.loaderInfo дает ошибку, если я обращаюсь к изображению из внешнего домена (SecurityError: Error # 2123)

Я прописан код Действие сценария в 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 откроется в новом вкладка). Проблема возникает, когда я обращаюсь к изображению из внешнего домена. Домен, который не поддерживает запрос из моего домена.

Дополнительная информация: Изображение логотипа отображается правильно в верхнем правом углу моего плеера. На clcik logo 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() 

Возможно, кто-нибудь поможет мне выйти из этой ошибки.

+0

я сделал ниже изменения в моем коде, и он работал на меня. // var info: LoaderInfo = event.target.content.loaderInfo; var info: LoaderInfo = event.target.contentLoaderInfo; – venkey

ответ

0

Нет файла http://www.esnipe.com/crossdomain.xml, который предоставляет доступ к загруженному контенту.

Существует обходной путь для доступа к загруженному образцу bitmapData изображения (Loading Profile Images on VK.com in 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); 
    } 
}