我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)
我使用了那个方法,但是使用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");
Run Code Online (Sandbox Code Playgroud)
不幸的是,这在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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的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
]; …Run Code Online (Sandbox Code Playgroud) javascript flash actionscript actionscript-2 externalinterface
我试图从javascript调用flash对象中的一个动作:
如:
function testExternalConnection(str:String):Void {
_root.debug.htmlText = "testExternalConnection ok";
}
ExternalInterface.addCallback("testExternalConnection", this, testExternalConnection);
Run Code Online (Sandbox Code Playgroud)
JS:
var movie = getFlashMovie("ap1_mod_hidden")
movie.testExternalConnection();
Run Code Online (Sandbox Code Playgroud)
同
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
Run Code Online (Sandbox Code Playgroud)
我使用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', …Run Code Online (Sandbox Code Playgroud) 在同一网页上的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');
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎适用于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)
Run Code Online (Sandbox Code Playgroud)
js(使用swfobject的内部速度文件)
function changeDocumentTitle()
{
alert('call from SWF');
}
Run Code Online (Sandbox Code Playgroud)
有谁知道会发生什么?
我在使用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>
Run Code Online (Sandbox Code Playgroud)
Ps - 顺便说一下,当我在浏览器中运行它时,此脚本显示"外部接口可用".它只在我在Flash Player 10中运行它时才可用.
如何将AS3中的值返回到javascript.我从JS调用AS3方法并希望AS3方法返回一个字符串:
//javascript
var string = swfObject["abcmethod"](arg1);
Run Code Online (Sandbox Code Playgroud)
我知道的唯一方法是添加一个回调方法,该方法在JS中从闪回调用.有没有更好的办法?