ActionScript 2.0 :: F8 ExternalInterface AddCallback Not Working?
Mar 18, 2008
I have never posted to this forum before but I am about to pull my hair outI've created a page that used External Interface before with no problems and I can't figure out what makes this one different. It works fine on both Firefox and Safari on a Mac. On a pc, however, the Flash has no problem calling JavaScript functions but the JavaScript can't call the ActionScript function. It doesn't matter if I try Firefox, IE7 or IE6. The error IE gives is that the object doesn't support the property or method.ere is the AS:
Code:
this.createEmptyMovieClip("samplework_mc", 999);
function loadWork(workname:String):Void {
In my Flex app, I need a Javascript control to call one of my Actionscript methods. Simple enough, according to the Flex/Actionscript documentation, I wrote this in my Actionscript code:
if (ExternalInterface.available) ExternalInterface.addCallback("setName", setNameInActiveWindow); In the Javascript control I wrote: document.getElementById('FlexAppId').setName(name);
Works great. Exactly as expected, so I went to production. But it doesn't work in production :(. Same exact code... I can't figure it out. The above Javascript code is run, but the callback is not executed in the Actionscript code.
I have been trying to get this working for a while now and am at the end of any ideas or samples.In 2.0 it was setVariables and was not problem.But now I'm trying to get ExternalInterface.addCallback to work and just can't seem to get it to work.Just want to send a variable from javascript to actionscript class.Ok, here is the javascript:
Code: function thisMovie(movieName) { if (navigator.appName.indexOf("Microsoft") != -1) { return window[movieName];[code]....
I have been trying to get this to work but with no luck.It's in a .Net aspx page. Even stripped the page of everything but this with no luck. And no master page either or ajax.
This is so frustrating...I'm going to do my best to be concise here, so forgive me if I leave too much out.I'm also going to try to simplify so I don't get bogged in details. I have a set of html pages that guide you through a tutorial. The different pages are REALLY just one big page that has divs hide and unhide as you go through the flow via previous and next buttons.
There are 4 pages which play a video clip. Each video clip .swf contains an FLVPlayback component that plays an .flv, and uses an .swf skin file. All these things play fine. If you're watching a video and you click "NEXT" the sound is still playing because of course you're still on the same page. So we looked into it and found out about the whole ExternalInterface.addCallback thing.
This code works perfectly with Chrome, Firefox and Opera but won't do it in IE. And... I also would need to have it working on IE6 = PS: the alert works fine in all the browsers (except IE6,7,8 because of the .src attribute =_=)! So I think the problem isn't the object retriving.
I try to create a switcher-swf. Its purpose is to detect parameters like screensize and then decide whether to load lowres.swf or highres.swf. Both lowres.swf and highres.swf work when tested independently.
The problem is the switching doesn't work. It's not the loading- or switching procedure itself. Rather I tracked the problem down to this single line which is present in the classcode of both lowres.swf and highres.swf:
PHP Code:
ExternalInterface.addCallback("update", update);
All it does is make a function called "update" available for external javascript-calls. If this line is removed, everything else works (including "ExternalInterface.call()"-statements!). However, I absolutely need this update-function to be available.
It seems that loading fails when the swf to be loaded contains an ExternalInterface.addCallback-Statement.
I'm trying to call a method inside a flash movie from js, every time the mouse leaves the "div". It works on Internet Explorer, but not in firefox. Here is the html script:
Here is example of the problem, there is an alert for the js and the flash should be able to remove the swf (see a gray background? it works! see a image, flash didn't receive the call): [URL]. This should work with internet explorer / safari / chrome (pc/mac) only firefox seams to reject this.
how I would go about writing code with ExternalInterface.addCallback() that would have my flash file return to frame 1 if clicked outside of the flash movie (if clicked anywhere in the html page)?
I'm trying to add an ExternalInterface.addCallback, to get a string back from a javascript function so that I can set the "visible" property of movie clip "title" to "true." Can someone tell me what I'm doing wrong?Here's my AS code:
I'm working on a Flash game that needs to call some Javascript on the page and get data back from it. Calling Javascript from Flash works. Calling the Flash functions from Javascript (often) doesn't. I'm using the Gaia framework.The swf is loaded in with SWFObjectThere's a button in the Flash file. On click, it uses ExternalInterface.call() to call a Javascript function. This works.The Javascript function calls a Flash function that was exposed with ExternalInterface.addCallback().Sometimes, the Javascript produces the following error: TypeError: myFlash.testCallback is not a function.
When the error happens, it affects all functions registered with addCallback(). Gaia and some of its included libraries use addCallback(), and calling those functions from Javascript also produces the TypeError.Waiting a long time before pressing the button in Flash doesn't solve the error.Having Flash re-try addCallback() periodically doesn't solve the errorWhen the error occurs, ExternalInterface.available = true and ExternalInterface.objectID contains the correct name for the Flash embed object.When the error occurs, document.getElementById('myflashcontent') correctly returns the Flash embed object.Edited to add:This issue shows up in Firefox 3.6, but not Chrome or IE8. I haven't tried older browsers.
I'm running the Debug version of the Flash player.My calls toExternalInterface.addCallback() are wrapped in a try...catch block. When the JS error occurs, the catch block is not triggered. It's a silent failure.The error occurs when testing on a webhost, with the swf loaded from the same server as the page it's on. I set allowScriptAccess = always.Setting flash.system.Security.allowDomain("mydomain") doesn't fix the error.From my Page class:
public class MyPage extends AbstractPage { // declarations of stage instances and class variables
Mainly because I have it ALWAYS working locally, when I test in a browser, but the moment I deploy to a server it stops working.
I've added trace commands and confirmed that ExternalInterface is in fact available before adding the callback, and an alert command in the javascript method correctly identifies the flash object. I also checked and allowscriptaccess is set to 'always'.
Could it have something to do with the flash being served on a remote server?
I thought this question would answer my question, but I have applied the following fixes:
.as Security.allowDomain("*"); Security.allowInsecureDomain("*"); html param name="allowScriptAccess" value="always" />
[Code]...
And I am still seeing the ExternalInterface.addCallback method fail locally. It works on a web server, or in the dev folder. But not in an arbitrary local folder.
I am trying to use javascript to run AS3 functions. When I attempt to compile I'm getting an "Access of undefined property" error message. I've read a few things online about this but I'm still not understanding it. I want to have the flash file always listening for javascript.
I am trying to write C++ code to interface to arbitrary instances of flash player 10 contained in arbitrary web pages from IE. All I need to be able to do is:
1) determine if the player is playing,
2) start playback, and
3) stop playback.
I am searching for a way to so this programmatically, without resorting to simulating user input to the control.
I have played around with the IShockwaveFlash COM interface which works OK on some sites but not others (e.g. not on YouTube). I am wondering if it is possible to use IShockwaveFlash::CallFunction() with the appropriate XML string to invoke predefined functions in ActionScript that have not been explicitly exported using ExternalInterface.addCallback().
Or perhaps there is enough functionaly using accessibility and the IAccessible interface?
I'm trying to control a Flash video player with external Javascript commands using 'ExternalInterface.addCallback' but I'm not having any success. Here is the HTML code:
I'm using Flash Professional CS5 with AS3. I have this line of code:ExternalInterface.call("alert", ev.target.data);Nothing happens. I've tried IE7, FF5, Opera and Safari. Nothing.My import is: import flash.external.ExternalInterface;If I use trace(), I get the proper feedback (but only in my test movie, NOT my swf).
I am having problems with External interface and IE9. The swf objects play fine but none of the information input is transferred to the cookies that should be set. I have seen that there are other questions similar to this but have not been able to solve my problem using them. THis is the html we are using
I have a very simple ExternalInterface.call in my flash that isn't working in IE9. I have ever simplified it is just call a javascript alert and it still isn't working. It works great in every other browser. I have IE 9.0.8. Does anyone know if this is this a known bug in IE9, or if there would be a good alternative to ExternalInterface? I can't find anything on the internet that is working.
I am having a problem using ExternalInterface.call to a javascript function. I have used this method many times in many places and at some point during this project, it was working, but now it stalls my Flash file when executed. I have the function: var initialize=function(){ExternalInterface.call("SCOInitialize");statusTxt.text="initializing"; } On my html page, there is a SCOInitialize function that works perfectly if I call it via the html page: <body onLoad="SCOInitialize()"> ... </body> When I make the call using flash... initialize(); ...the Flash file just gets hung up and it actually wont execute the second line of code in the function: statusTxt.text="initializing"; What is the deal? I can't for the life of me figure out why it won't
I want to call a function inside a Flash movie from javascript, using the ExternalInterface class. The problem is that to get it to work with Firefox I need to use the embed element and with the rest I have to get the object element. To solve it, I gave different ids to that two elements and depending on the user agent I select one or the other:
function getMovie(movieName) { alert(navigator.userAgent); if (navigator.userAgent.indexOf("Firefox") != -1) {
[Code].....
This works, but it is not very elegant and it may not work with other browsers..
I am calling an Actionscript function from JavaScript and it works in all browsers except for IE9. I narrowed it down to the js function that retrieves the movie object:
I'm trying to call a function in my ActionScript from my JavaScript, I've managed to successfully do this with another flash file but in the current one it's failing for some reason. I'm using jQuery SWFEmbed, this is my JS code:[code]The ExternalInterface.call work, and the trace outputs true, I have no idea what's going on.If you could also tell me how I can pass parameters to a ExternalInterface callback.