Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Actionscript 3 AS3 ExternalInterface在IE中工作,但在Firefox中不工作_Actionscript 3_Firefox_Externalinterface - Fatal编程技术网

Actionscript 3 AS3 ExternalInterface在IE中工作,但在Firefox中不工作

Actionscript 3 AS3 ExternalInterface在IE中工作,但在Firefox中不工作,actionscript-3,firefox,externalinterface,Actionscript 3,Firefox,Externalinterface,我正在尝试使用ExternalInterface从javascript执行AS3函数。在IE中似乎工作正常,但firefox总是返回未定义的javascript错误方法 我在谷歌上搜索了很久,排除了以下可能性: 1) 有些人说你需要在你的对象标签里有一个嵌入标签,所以增加了一个——没有运气 2) 许多人说,在调用javascript之前,需要确保flash已加载。我的电话是在按下页面上的链接之后。我总是先使用flash应用程序,然后只在最后按链接 3) 然后我想这可能是一个安全问题,因此添加了以

我正在尝试使用ExternalInterface从javascript执行AS3函数。在IE中似乎工作正常,但firefox总是返回未定义的javascript错误方法

我在谷歌上搜索了很久,排除了以下可能性:

1) 有些人说你需要在你的对象标签里有一个嵌入标签,所以增加了一个——没有运气

2) 许多人说,在调用javascript之前,需要确保flash已加载。我的电话是在按下页面上的链接之后。我总是先使用flash应用程序,然后只在最后按链接

3) 然后我想这可能是一个安全问题,因此添加了以下内容:

try {
    ExternalInterface.addCallback("test", testing);
    trace("added callback"); 
}
catch (error:SecurityError) {
    trace("Security Error:"+error.message); 
}
catch (error:Error) {
   trace("Error:"+error.message); 
} 
但它会打印出“添加的回调”:(

还有谁知道我还能尝试什么吗?我正在运行最新的Firefox和FlashPlayer 10

问候,


奥利

如果您的flash在Firefox中运行正常,我们可以放心地认为试图调用该函数的HTML包装器或JavaScript代码有问题。发布这些内容将有很大帮助

但是,一般来说,IE将使用
标记,其他人将使用
标记。我认为最好的办法是使用jQuery来进行flash嵌入和调用,下面是我碰巧在IE、Firefox和Chrome上使用的简单HTML代码:

<object id="GAMENAME" classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
    codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0'>
    <param name="allowScriptAccess" value="always">
    <param name="movie" value="game.swf">

    <embed id="GAMENAME" name="GAMENAME" src="game.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
        allowScriptAccess="always">
    </embed>
</object>

是的,它要求全局变量<代码> GAMENAME>代码>设置为Flash对象的名称。在这种情况下,它必须是“代码”>“GAMENAME”<代码>对应于上面的HTML。我刚才提到的这不是我所考虑的生产代码吗?< /P> 然后调用Flash对象,我使用类似于:

getGame().test()

这里的JavaScript可能并不完全合理,也不代表最佳实践,但它确实指出了在存在
和多个浏览器的情况下查找嵌入式flash对象时存在的问题。

解决了这个问题。您需要为IE使用对象标记,为FF使用嵌入标记。尚未测试h其他浏览器,但希望嵌入标记也适用于它们

帮助其他人解决同样的问题。这是一个适用于我的HTML页面:)

问候,

奥利


测验
html,正文{高度:100%;背景色:#ffffff;}
正文{边距:0;填充:0;溢出:隐藏;}
#flashContent{宽度:100%;高度:100%;}
函数testIt(){
真空容器;
if(navigator.appName.indexOf(“Microsoft”)!=-1){
flashContainer=document.getElementById(“测试”);
}否则{
flashContainer=document.getElementById(“嵌入测试”);
}
test(“js说你好”);
}  

这似乎是一个JavaScript问题,而不是Flash问题,这意味着错误可能在于您的JS代码。你用过FireBug的控制台吗?也许发布你的代码?
getGame().test()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">
        html, body { height:100%; background-color: #ffffff;}
        body { margin:0; padding:0; overflow:hidden; }
        #flashContent { width:100%; height:100%; }
        </style>
    </head>
    <script>
        function testIt(){
            var flashContainer;
             if(navigator.appName.indexOf("Microsoft") != -1){
                  flashContainer = document.getElementById("test");
             }else{
                  flashContainer = document.getElementById("test-embedded");
             }
            flashContainer.test("js says hello");
        }  
    </script>
    <body>
        <a href="#" onclick="testIt();">Press here</a>
        <div id="flashContent">
            <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="test" align="middle" width="550" height="400">
                <param name="movie" value="test.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="transparent" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
                <embed src='test.swf' height='400' width='550' id='test-embedded' PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></embed>
            </object>
    </body>
</html>