Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash ExternalInterface.addCallback在本地环境中失败_Flash_Apache Flex_Actionscript 3_Actionscript_Externalinterface - Fatal编程技术网

Flash ExternalInterface.addCallback在本地环境中失败

Flash ExternalInterface.addCallback在本地环境中失败,flash,apache-flex,actionscript-3,actionscript,externalinterface,Flash,Apache Flex,Actionscript 3,Actionscript,Externalinterface,我本以为可以回答我的问题,但我已应用了以下修复: .作为 .html .js 我仍然看到ExternalInterface.addCallback方法在本地失败。 它在web服务器上或在dev文件夹中工作。但不在任意本地文件夹中。将swf/html所在的文件夹添加为受信任的位置。右键单击Flash Player>全局设置>高级>受信任位置 将swf/html所在的文件夹添加为受信任的位置。右键单击Flash Player>全局设置>高级>受信任位置 我的猜测是,当您从文件://URL(而不是从W

我本以为可以回答我的问题,但我已应用了以下修复:

.作为

.html

.js

我仍然看到
ExternalInterface.addCallback
方法在本地失败。
它在web服务器上或在dev文件夹中工作。但不在任意本地文件夹中。

将swf/html所在的文件夹添加为受信任的位置。右键单击Flash Player>全局设置>高级>受信任位置

将swf/html所在的文件夹添加为受信任的位置。右键单击Flash Player>全局设置>高级>受信任位置

我的猜测是,当您从
文件://
URL(而不是从Web服务器甚至本地主机运行)加载.html页面时,就会出现问题。发生此问题的原因是Flash Player对本地文件使用不同的

ExternalInterface.addCallback
不能在
文件中使用://
沙箱,除非您已设置了受信任的位置(根据Tom的回答;这可能解释了如果设置为受信任的位置,它为什么会在您的dev文件夹中工作)。不幸的是,设置受信任的位置可能是一件非常痛苦的事情,所以我更喜欢在localhost上设置一个Web服务器来进行测试


如果您的最终目标是将html(以及js、swf等)部署到Web服务器,那么您应该只在开发过程中遇到这个问题(除非遇到其他跨域问题)。但是,如果您计划在没有Web服务器的情况下进行分发(比如将文件刻录到DVD),那么这将是一个反复出现的问题。

我猜,当您从
文件://
URL加载.html页面时(而不是从Web服务器,甚至本地主机运行),就会出现问题。发生此问题的原因是Flash Player对本地文件使用不同的

ExternalInterface.addCallback
不能在
文件中使用://
沙箱,除非您已设置了受信任的位置(根据Tom的回答;这可能解释了如果设置为受信任的位置,它为什么会在您的dev文件夹中工作)。不幸的是,设置受信任的位置可能是一件非常痛苦的事情,所以我更喜欢在localhost上设置一个Web服务器来进行测试


如果您的最终目标是将html(以及js、swf等)部署到Web服务器,那么您应该只在开发过程中遇到这个问题(除非遇到其他跨域问题)。但是,如果您计划在没有Web服务器的情况下进行分发(例如将文件刻录到DVD),则这将是一个反复出现的问题。

请尝试将要测试此功能的文件夹添加到此处的安全设置中:

尝试将要测试此功能的文件夹添加到此处的安全设置:

我敢打赌,这与SWF完成加载的时间有关。如果它完成得很快,就像它在本地完成的那样,它可以改变页面设置的顺序。swf可能会在加载第三方JS库之前进入并开始调用,等等。请尝试在JS和swf中设置一些超时,以确保事情按正确的顺序发生,并查看这是否可以解决问题。我认为你不需要安全方面的东西-你只需要在你的html和swf来自不同的域时才需要。谢谢你的评论。我确实有一种机制让html等待flash播放器初始化,我没有想到会出现另一种情况。我想在我的例子中,它是不相关的,因为html必须首先存在,并且没有外部文件。不过我现在有一个答案,我会发布。当html在任意文件夹中时,你是如何打开它的?只是在浏览器中。有没有其他方法可以打开html?我敢打赌,这与SWF完成加载有关。如果它完成得很快,就像它在本地完成的那样,它可以改变页面设置的顺序。swf可能会在加载第三方JS库之前进入并开始调用,等等。请尝试在JS和swf中设置一些超时,以确保事情按正确的顺序发生,并查看这是否可以解决问题。我认为你不需要安全方面的东西-你只需要在你的html和swf来自不同的域时才需要。谢谢你的评论。我确实有一种机制让html等待flash播放器初始化,我没有想到会出现另一种情况。我想在我的例子中,它是不相关的,因为html必须首先存在,并且没有外部文件。不过我现在有一个答案,我会发布。当html在任意文件夹中时,你是如何打开它的?只是在浏览器中。有没有其他方法可以打开html?这也是正确的,但现在似乎是旧方法,因此似乎不理解一个问题可以有多个正确答案。你可能认为问答网站会知道这一点。这也是正确的,但现在似乎是老办法,因此似乎不理解一个问题可以有多个正确答案。你可能认为问答网站会知道这一点。
Security.allowDomain("*");
Security.allowInsecureDomain("*");
param name="allowScriptAccess" value="always" />
params.allowscriptaccess = "always";