我正在尝试使用Javascript回调到我的页面中嵌入的Flex应用程序.通过一些示例,我看到这段代码用于获取Flex应用程序的引用:
// Get the reference:
function thisFlexApp(appName) {
    if(navigator.appName.indexOf ('Microsoft') != -1) {
        return window[appName];
    }
    else {
        return window.document[appName];
    }
}
// Use it:
var someVariable = thisFlexApp('NameOfFlexApp').callbackMethod();
我使用了那个方法,但是使用IE9我得到错误,表明"thisFlexApp"调用不起作用.事实证明window.document [appName]在IE9中工作,但是窗口[appName]没有.由于我不希望我的政府客户使用IE9,我想知道这种方法的IE版本实际上会起作用的是什么版本?是否有另一个测试更好地使用而不是上面假设所有版本的IE以某种方式工作?提前致谢.
javascript apache-flex internet-explorer callback externalinterface
我正在尝试获取Flash播放器所在的当前URL.不是.swf文件的URL,而是浏览器指向的URL.到目前为止我用过:
var st:String = ExternalInterface.call("window.location.href");
不幸的是,这在IE中不起作用.从我的研究中,我可以看出它无论如何都不适用于IE.
我在互联网上发现的唯一另一件事就是在标签上加上"id"标签.
所以我试图找出是否和/或如何:
以某种方式使用IE和其他浏览器中的ExternalInterface进行调用,以返回给我当前的URL.
要么
在标记上标记id ="PA"属性,让AS3读取该标记并将其作为String引入,而不使用JavaScript
我的限制是我只能将标记添加到HTML中,并且不能添加任何JavaScript函数.这必须在AS3中严格完成.
不管怎样,我需要知道我在哪个URL.任何帮助是极大的赞赏.
javascript internet-explorer actionscript-3 externalinterface
到目前为止,我一直在使用ExternalInterface,在极少数情况下我需要与HTML进行通信.
我试图ExternalInterface.call()从我的SWF里面.
请注意,调用来自我嵌入到另一个SWF(_root我无法控制的SWF)的SWF内部.
这是我的JavaScript:
function player_DoFSCommand(command, args) 
{
    args = String(args);
    command = String(command);
    var arrArgs = args.split(g_strDelim);
    switch (command)
    {
        case "CC_ClosePlayer":
            console.log("yo");
            break;
        default:
            // alert(command);
            break;
    }
}
这是我的AS2代码:
import flash.external.ExternalInterface;
var quiz = _root;
quiz.g_mcFrame.mcFinish.swapDepths(quiz.getNextHighestDepth());
quiz.g_mcFrame.mcFinish._visible = false;
quiz.oSlide.m_oInteraction.m_oVariableMgr.m_arrBoolResumeData = false;
var arrVars:Object = quiz.oSlide.m_oActionHandler.m_oFrame.m_oVariableMgr.m_arrVariables;
var args:Array = [
    arrVars[2].m_nNumber, // Points awarded
    arrVars[3].m_nNumber, // Max points
    arrVars[5].m_nNumber, // Pass percentage
    arrVars[6].m_nNumber, // Pass points
    arrVars[7].m_nNumber, // Score percent
    arrVars[10].m_strString // Result
]; …javascript flash actionscript actionscript-2 externalinterface
我试图从javascript调用flash对象中的一个动作:
如:
function testExternalConnection(str:String):Void {
    _root.debug.htmlText = "testExternalConnection ok";
}
ExternalInterface.addCallback("testExternalConnection", this, testExternalConnection);
JS:
var movie = getFlashMovie("ap1_mod_hidden")
movie.testExternalConnection();
同
function getFlashMovie(movieName) {
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}
我使用swfobject包含我的flash:
<span id="ap1_mod_hidden"></span>
<script type="text/javascript">
    // Setting up the flash player
    var flashvars = {
        mp3Path: "stop",
        artistName : "",
        trackName : ""
    };
    var params = {
        codebase: 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
        src: '/flash/ap1_mod.swf',
        quality: 'high',
        pluginspage: 'http://www.macromedia.com/go/getflashplayer',
        scale: 'showall',
        devicefont: 'false',
        bgcolor: '#999999',
        name: 'ap1_mod', …在同一网页上的2个Flex/Flash应用程序之间进行通信的最佳方式是什么?我需要一个第三方Flash应用程序来调用我的Flex 4应用程序上的一个功能(他们已经准备好如何指定他们的第三方应用程序).我ExternalInterface.call("javascript_function", arguments)广泛使用.我知道有一个从Javascript到Actionscript的桥梁.所以我想我可以从他们的flash应用程序 - > javascript函数 - > flex bridge  - >我的flex应用程序.我必须通过JavaScript吗?有没有更好的办法?
import flash.external.ExternalInterface;
var pageURL:String = ExternalInterface.call('window.location.href.toString');
上面的代码似乎适用于Firefox,但是当我尝试使用Chrome或IE时它不起作用(它会导致错误并停止swf的执行).
任何提示?
我有一个使用ExternalInterface与javascript通信的flash.我已经使用swiffy将其转换为HTML5.如何使用javascript调用我在flash中创建的方法?
HI,
我试图从我的动作脚本代码调用一个javascript函数,但它没有工作;
AS3:
if (ExternalInterface.available)
  {
  try
  {
    ExternalInterface.addCallback("changeDocumentTitle",null);
  } 
  catch(error:Error)
js(使用swfobject的内部速度文件)
function changeDocumentTitle() 
    {
        alert('call from SWF');
    }
有谁知道会发生什么?
我在使用Flash播放器10的FlashDevelop中测试程序.需要externalInterface才能工作,但在运行这个简单的测试程序时,它会显示"ExternalInterface is available".这可能是什么问题?如何使ExternalInterface工作?
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        private function init():void {
            if (ExternalInterface.available) {
                ExternalInterface.call("alert",
                        "ExternalInterface is available");
            } else {
                Alert.show("ExternalInterface is not available");
            }
        }
    ]]>
</mx:Script>
<mx:ApplicationControlBar dock="true">
    <mx:Button id="button"
            label="ExternalInterface.available"
            click="init();" />
</mx:ApplicationControlBar>
Ps - 顺便说一下,当我在浏览器中运行它时,此脚本显示"外部接口可用".它只在我在Flash Player 10中运行它时才可用.
如何将AS3中的值返回到javascript.我从JS调用AS3方法并希望AS3方法返回一个字符串:
//javascript
var string = swfObject["abcmethod"](arg1);
我知道的唯一方法是添加一个回调方法,该方法在JS中从闪回调用.有没有更好的办法?