Javascript 通过Actionscript调用JS

Javascript 通过Actionscript调用JS,javascript,actionscript-3,Javascript,Actionscript 3,我正在尝试使用ActionScript3运行Javascript 这是绑定到按钮的代码: import flash.external.ExternalInterface; function call_javascript(evt:MouseEvent):void { ExternalInterface.call("alert", "JS"); } js_btn.addEventListener(MouseEvent.MOUSE_UP, call_javascript); 这是我的HTML:

我正在尝试使用ActionScript3运行Javascript

这是绑定到按钮的代码:

import flash.external.ExternalInterface;

function call_javascript(evt:MouseEvent):void {
ExternalInterface.call("alert", "JS");
}

js_btn.addEventListener(MouseEvent.MOUSE_UP, call_javascript);
这是我的HTML:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="js" align="middle">
    <param name="movie" value="js.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="window" />
    <param name="scale" value="showall" />
    <param name="menu" value="true" />
    <param name="devicefont" value="false" />
    <param name="salign" value="" />
    <param name='AllowScriptAccess' value='always'/>
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="js.swf" width="550" height="400">
        <param name="movie" value="js.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="window" />
        <param name="scale" value="showall" />
        <param name="menu" value="true" />
        <param name="devicefont" value="false" />
        <param name="salign" value="" />
        <param name="allowScriptAccess" value="always" />
    <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflash">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Scarica Adobe Flash Player" />
        </a>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

当我按下按钮时什么也没发生,为什么? 我使用的是FlashProfessional CS6,它将js函数名和参数作为单独的参数

试试这个:

ExternalInterface.call("alert", "JS");
编辑:您还需要在HTML页面中添加

将此添加到SWF的容器HTML页面

<param name='AllowScriptAccess' value='always'/>

例如:

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 


您是否在代码中将
allowScriptAccess
设置为true?您可以使用
var isAvailable:Boolean=ExternalInterface.available验证这一点似乎未启用,如何启用它?您是在本地测试还是在web服务器上测试?本地测试可能会将文件放入错误的安全沙盒中。从我发布的链接:
对于本地运行的SWF文件,只有当SWF文件和包含的网页(如果有)在本地受信任的安全沙箱中时,对这些方法的调用才会成功。如果内容位于本地网络或本地文件系统沙箱中,则调用这些方法失败。
是,这就是问题所在!我是在FlashPro中启动的,而不是从我的XAMPP服务器启动的。从XAMPP来看,它是有效的。如果你把这个加在你的答案上,我可以把它标记为正确的。