我需要从基于Flash 4的Web应用程序调用javascript函数。当我在调试模式下运行它时,它运行得很好但是当我在其他机器上进行发布构建或运行相同的应用程序时,它不会调用JavaScript函数。
为了测试,我只是调用JavaScript的示例Alert函数。有人可以帮我解决我错过的问题吗?
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" initialize="application1_initializeHandler(event)"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
public function btnLogin_click():void
{
var s:String;
if (ExternalInterface.available)
{
ExternalInterface.call("alert", "Hello World!");
}
else
{
Alert.show("External interface not available");
}
trace(s);
}
protected function application1_initializeHandler(event:FlexEvent):void
{
flash.system.Security.allowDomain("always");
}
]]>
</mx:Script>
<mx:Form>
<mx:FormItem>
<mx:Button id="btnLogin" label="Login" click="btnLogin_click()" />
</mx:FormItem>
</mx:Form>
</mx:Application>
答案 0 :(得分:1)
首先,确保您的测试计算机上的JavaScript已打开,然后确保在添加swfobject.js文件后添加JavaScript文件/代码。
我有类似的问题,但是当我将swfobject.js移到所有js包含的顶部时,它就解决了。
答案 1 :(得分:1)
您是否尝试过类似(Flex)的测试:
ExternalInterface.call("alertFn");
和JS:
function alertFn() {
alert("hello world");
}
我从未尝试过对外部JS函数的ExternalInterface调用,例如“alert”......
答案 2 :(得分:0)
通过
挖掘出错误代码2060
Alert.show(e.message)
我发现由于某些原因,ExternalInterface.call
无效file://
且需要http(s)://
所以,任何遇到此问题的人,都要自己动手使用网络服务器(Apache)或GAE来测试这类事情,并将自己从"Extreme time wastage"中解脱出来:
使用带有Flex的file://我遇到了无数个小时的问题 AJAX Bridge。
在SWF初始化期间,AJAX代码将无提示失败 回调AJAX代码。然后我将为所有的所有值都为null SWF根元素。
我一安装了Web服务器并开始使用http:// localhost 一切都很完美。
极度浪费时间:(
答案 3 :(得分:0)
test.mxml ..........
protected function bt1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
ExternalInterface.call("callUnity");
}
的.js ....
function callflex(){
alert("got it");
}