我有什么
大量的主权财富基金没有它的来源(所以我不能修改它)
我需要什么
用我的AIR应用程序加载和播放这个主权财富基金。
问题
问题是这些主权财富基金似乎
Security.allowDomain('*')在他们的来源,所以他们会
SecurityError:错误#3207:应用程序-沙箱内容无法访问此功能。
在我装货后。我知道Air不需要使用这一行,但是我的整个应用程序不会忽略或警告它,而是在加载了其中一个swfs之后停止执行。如果我能尝试/抓住这个字符串,但是正如我说的,我没有那个主权财富基金的来源,所以我唯一能做的就是修改我的AIR应用程序。
我试过什么
我已经尝试通过以下方式捕获加载程序中的所有错误
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
private function loaderIOErrorHandler(e:IOErrorEvent):void {
e.preventDefault();
}但它似乎根本不是捕捉加载程序中的错误
更新
我不能分享其中的一个主权财富基金,但下面是我做的模拟,复制问题的https://www.dropbox.com/s/0spbdzijfpboi47/problematicSwf.swf?dl=0
这里是init代码
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
Security.allowDomain('*');
tf = new TextField();
tf.text = 'Me loaded!';
addChild(tf);
}如您所见,在加载的swf中,它正在对allowDomain造成冲击。下面是我加载它的方式
var ctx:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest(path), ctx);发布于 2015-12-08 15:38:30
这是一个典型的安全限制,但这是一个非常严格的限制,它的目的是确保服务的swf永远不会被使用以外,它是为什么是第一次。
因此,对您的问题的简单回答是:外部加载的swf与“Security.allowDomain(‘*’)”沙箱;无论如何都不允许沙箱式的AIR应用程序与它们交互。相反,这些swf将能够通过沙箱桥与母公司AIR应用程序进行交互。
如果您真的不能修改那些swf,那么您将永远无法将它们添加到AIR应用程序中的显示列表中,或者调用它们的任何方法。沙箱桥对你也没有用。
我敢打赌,这不是你想听到的答案,但这是你唯一能得到的答案。
https://stackoverflow.com/questions/34150510
复制相似问题