首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内置allowDomain('*')的Adobe装载外部swf

内置allowDomain('*')的Adobe装载外部swf
EN

Stack Overflow用户
提问于 2015-12-08 07:45:47
回答 1查看 646关注 0票数 1

我有什么

大量的主权财富基金没有它的来源(所以我不能修改它)

我需要什么

用我的AIR应用程序加载和播放这个主权财富基金。

问题

问题是这些主权财富基金似乎

代码语言:javascript
复制
Security.allowDomain('*')

在他们的来源,所以他们会

SecurityError:错误#3207:应用程序-沙箱内容无法访问此功能。

在我装货后。我知道Air不需要使用这一行,但是我的整个应用程序不会忽略或警告它,而是在加载了其中一个swfs之后停止执行。如果我能尝试/抓住这个字符串,但是正如我说的,我没有那个主权财富基金的来源,所以我唯一能做的就是修改我的AIR应用程序。

我试过什么

我已经尝试通过以下方式捕获加载程序中的所有错误

代码语言:javascript
复制
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代码

代码语言:javascript
复制
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造成冲击。下面是我加载它的方式

代码语言:javascript
复制
var ctx:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest(path), ctx);
EN

回答 1

Stack Overflow用户

发布于 2015-12-08 15:38:30

这是一个典型的安全限制,但这是一个非常严格的限制,它的目的是确保服务的swf永远不会被使用以外,它是为什么是第一次。

因此,对您的问题的简单回答是:外部加载的swf与“Security.allowDomain(‘*’)”沙箱;无论如何都不允许沙箱式的AIR应用程序与它们交互。相反,这些swf将能够通过沙箱桥与母公司AIR应用程序进行交互。

如果您真的不能修改那些swf,那么您将永远无法将它们添加到AIR应用程序中的显示列表中,或者调用它们的任何方法。沙箱桥对你也没有用。

我敢打赌,这不是你想听到的答案,但这是你唯一能得到的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34150510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档