Javascript :: External Interface Calls To Flash Not Working In IE9?
Jan 31, 2011
We have a flash game embedded in a web page (using SWFObject v2.2) and there are some links on the page that call into the flash in the following manner:
window.document["flashObjectId"].flashMethod();
This has worked great on all browsers we have tried including IE7 and 8, however on IE9 it generates the following error: "SCRIPT438: Object doesn't support this property or method".
It does work in compatibility mode so I tried adding a meta tag to tell IE9 to use compatibility mode by default, however that didn't work because our game runs in an IFrame within Facebook.
I have tried referencing the flash object every way I could think of in the Javascript but I always get that same error message in IE9.
I have a flash player with an external javascript interface: reloadData() I'm calling that function via Javascript when editing information on the page - basically to keep data on the page and in the player in synch. The reloadData() function works fine when the player is hosted locally. When we move it to the CDN (Amazon Cloudfront), the player loads successfully, but the external javascript interface no longer works - console.log(player) reveals the following:
<object type=,"application/x-shockwave-flash" data="[our_cloudfront_url].swf" width="920" height="404" id="player" style="visibility:visible;"> Uncaught TypeError: Object #<an HTMLObjectElement> has no method 'reloadData'
I know there are a lot of things that behave differently when working with items on a CDN, but we're using a CNAME to point to the cloudfront distribution (buildid.ourdomain.net => distributionid.cloudfront.net)
I'm hitting a brick wall here, and it's driving me mad. Used to use ExternalInterface to call Flash functions from Javascript all the time, and now under CS5 (and the way it uses object id's instead of embed in html) it's stopped working for me in certain browsers. I put together a really simple program that has the person click a link in the browser that activates a javascript function that simply sends some text in to Flash to display in a TextArea. Here's the as3 code:
I will call flashObject.httpRequest to complete a http request via flash. The problem is there is no reference about httpRequest is an async method or sync. It is important for my application.
private function httpRequest (uri:String, param:String="", method:String="GET"):void { var
Is there a non-polling way for Javascript to command Flash right when its external interface is ready? In Actionscript, I've registered a function for Javascript to call:[code]SWFObject lets you run code when Flash has been successfully embedded through a callback. I attempt to run $ ('flash Player'). doStuff in this callback, but it claims it's undefined. It seems that Flash needs some time to boot up its external interface. So I've been using a polling hack to find out when the external interface is ready:[code]There's a visually perceptible delay in the execution of doStuff and it makes my overall code structure muddy.
I am looking for a simple and straightfoward example of how I can pass the value of a variable into flash using javascript.Specifically, I'd like to use javascript to pass the filename of an external video file that I would like to load into my flash movie.I'd also like to call a function in the SWF that plays the movie once the filename as been passed to the flash movie.External Inferface looks like the way to goI've found a few decent AS2.0 examples, but converting them to AS3.0 has proven difficult and many of the examples are much too complex for what I am trying to do.
Having a problem trying to get the external interface working with as3. My flash file has 2 input text boxes with instances of 'received_ti' and 'sending_ti' and a button with instance of 'send_button'. My html code has a simple form with 'sendField' and 'receivedField' inputs and a submit with a value of 'Send'.
At the moment i can get the flash file to send text into the html 'receivedField' input but cannot send text from html into the flash file's 'received_ti' text box.
Several months ago for a project at work i developed a video player using flash, external interface and swfobject.js. I used external interface to facilitate communication between javascript and actionscript. This works great. Currently I am working on an extension to this that requires me to extrapolate logic from what i already written. I am using the same swf file in both applications, but in the extension i can't get the flash object to recognize my calls. Since i am using the same swf object i know that my problem is in the javascript, i just don't know where. I am using the JQuery Library. Without further adieu here's my code.
I'm trying to get javascript to talk to flash, but I haven't been able to get it to work.I've gotten flash to talk to javascript, but not the other way around. It seems as thought flash isn't listening to the javascript, or I'm doing something wrongPart of the AS3 to initially call the js:
I need to call a function in JS that's expecting a JSON object. Can I do this from External Interface? The company's example (after the include file url) in HTML looks like this:
//there's an js include URL earlier// Shopwithme.Initialize({ "id":"prod1234",
[code]...
But, I need to dictate these vars through Flash. How do I call this function using External Interface?This is my EI code, but I'm obviously off base, since it's not working:
I'm having a problem with Flash and Internet Explorer. I'm trying to close out a browser window with
//as code ExternalInterface.call("closeWindow");[URL].. Of course this works in all other browsers except IE, the error that I am getting is:'null' is null or not an object
I have been at it for two days now and have not been able to resolve this issue. I am trying to call an AS3 function from JavaScript via ExternalInterface API which is simply not working at all. If I to call a JavaScript function form html loaded swf, it works beautifully.[code]
I've got a website where I want people to be able to upload their own SWFs which are then displayed on the page - mainly for timed image displays etc...I'm concerned about javascript security as flash can call JS functions, theoretically if you knew which JS commands to call (e.g. some AJAX stuff) then external people could do some real damage.So my question is, is there anyway I can disable calling javascript from within flash? Possibly something in the embed object paramaters tags?
I have an interface that contains audio controls in the Library (class: AudioControls)When a movie is loaded into the interface, and it happens to contain a sound (class: Audio_1), this loaded movie calls an interface function to show the audio controls:
Code: if (Interface._ui != null) { Interface._ui.playCurrentAudio(); }
The problem is, the playCurrentAudio() func in the interface contains some code that refers to nested MCs:
Code: public function showAudioControls():void { audioControls.x = 710; audioControls.y = 583; //
[code]....
That would be the speaker, rewind_btn, playPause_btn, etc. Referring to the parent clip, "audioControls", is no problem of course. But I get an error when I publish the loaded movie:
1119: Access of possibly undefined property speaker through a reference with static type AudioControls. 1119: Access of possibly undefined property rewind_btn through a reference with static type AudioControls. 1119: Access of possibly undefined property playPause_btn through a reference with static type AudioControls.
I'm trying to determine the practical difference between using the com.facebook.session.WebSession and com.facebook.session.JSSession. The documentation ([URL]) has more around WebSession - but the example I have which is closest to what solution I'm trying to implement uses JSSession and it looks like I could avoid all of the JavaScript pass-through & ExternalInterface calls I'm making. It appears that the benefit of using this new ActionScript Facebook API is to avoid having to make all of the Facebook calls via JavaScript.
My main movie (SWF A) loads another movie (SWF B) and plays it.SWF B is legacy content - I can't modify it.SWF A is AS3. SWF B might be AS2 or AS3SWF B makes several calls to a javascript function that would normally reside in the hosting web page.The javascript calls might use ExternalInterface, or they might use getURL(javascript: xxx) or they might even use fscommand.
My questions:
Is there any way I can intercept the javascript call in movie A? I don't want to have to resort to the browser, so simply using ExternalInterface or similar to pipe the request back into the movie won't work.
If there is a way, how does it vary across the different versions (ie. what's the difference between the child movie being AS2 or AS3, and what's the difference between the various means of calling js?
I'm working on a web deployment, using Flex 4.0. I would be interested also in whether this is possible in Air, or Air Mobile.
I have a button in an AS 2.0 fla that calls a javascript function like an anchor so the html goes to a set y position of 750button actions are in a frame
jobsLink_mc.onPress = function () { //ExternalInterface.call("scrollPageY"); ///getURL("javascript:scrollPageY();") getURL("javascript: scrolling()") }
Now the javascript in the html of the page is
<script language="javascript"> function scrolling(){ document.body.scrollTop = 750; } </script>
I originally copied the code from a page a designer never finished but the function works. [URL]click the blue button JOBS / INTERNSHIPS you will see the flash button calls the java function and the page is viewed at Y 750 Now I have the same page elements in a different fla that calls the same function and it doesn't work.
Is there a way to tell Flash to ignore getURL javascript calls when testing? It's highly annoying to hit control + enter and then have a damn browser window pop-up every single time.I'm woring on a site that has javascript calls to Google Analytics to track nearly every action. This is not by my choice but by the choice of a client. Typically the tracking gets added last but in this case, that was for phase I launch of the site and now I'm onto phase II.I could go through & comment out all the getURL javascript calls until the sites ready but I'm hoping theres another way.
What I have:A swf exports a function via ExternalInterfaceJavascript creates new embed object and adds it to the documentCalling flash functions works fine in other browsersCalling flash functions will fail in IE 8Example of exporting functions in swf:
flash.external.ExternalInterface.addCallback("isActive", ... Example of creating the embed object: var b = document.createElement('embed');
Everytime I try to do even an ExternalInterface.call('alert','abc'); (Which will work on every browser) I get an object doesn't support this property or method After the alert appears. It even happens in the HTML generated by flash without me touching it...
I have a series of 10 external interface callbacks that are called through javascript and load mp3 files. The problem is, someone is able to click these while my pre-load function is running and it causes multiple files to load. Is there a way to disable the callbacks while the pre-load function is running?
ExternalInterface.addCallback("receiveText1", receiveText1); function receiveText1(value:String):void { channel.stop(); channel2.stop();
Normal Externalinterface methods do not work if i wrap my swf(html) in AIRpackage.Javascript to flash vice versa.Anyone have a workaround to make it work?
I am developing an Adobe AIR application which uses both native windows and floating panels. Is is possible to enable the creation of a floating window instead of a native window when a JavaScript window.open() function is called?
It is required that all of the floating windows are contained within one native window, therefore the creation of more native windows is not suitable.
I have used a Custom HTMLHost class in order to enable the creation of a native window but I can't work out a way of creating a MDI window instead. I am using the flexMDI framework for my floating panel interface.
Working on a site that uses external interface to control the appearence of a number of buttons, setting color and text. The whole deal works fine in Firefox and IE (after vigorous debuggging), but I can't seem to address the objects correctly in safari. The swfs are hard coded in and I'm using a function to find the reference to the object and then using an EI addcallback to set the values.Here some javascript for the main functions:
Code: function getMovieName(movieName) { if (window[movieName]) {
I published my fla as scorm 1.2 tracking. I ziped up my files and loaded to lms. It will not write the score. It runs and functions ok but does not write score.
I created a simple fla with two frames. Frame two has this code below to write a score to the lms (blackboard).I published my fla as scorm 1.2 tracking. I ziped up my files and loaded to lms. It will not write the score. It runs and functions ok but does not write score.[code]
My company has some software which we use to acquire data and interact with some hardware. If we wanted to put a mockup on a website which allows the user to get a feel for the UI (gather some data, change some settings etc.), what are some good methods to do so?I'm thinking either some clever javascript or flash. I've done some JS before but only to style elements of a page. I did some stuff with flash about 8 years ago and found it really fiddly.
So my questions; Are javascript/flash reasonable solutions for this or is there something better. What is likely to be the simpler/quicker route? Is there a better way to achieve the end result?] The demo doesn't need real data, just some fake/dummy example stuff is fine.