Hi guys I just encountered "unknown" in IE myself a few weeks ago. It's due to ActionScript/JavaScript communication over the COM+ bridge; IE will not return a proper typeof and will simply say "unknown". It isn't a bug, it's a 'feature' implemented by Microsoft.
Quote from comment by Tom Trenka (of dojotoolkit) near the bottom of this blog post <http://robertnyman.com/2005/12/21/what-is-typeof-unknown/>: Internet Explorer displays “unknown” when the object in question is on the other side of a COM+ bridge. You may not know this or realize this, but MS’s XMLHTTP object is part of a different COM+ object that implements IUnknown; when you call methods on it, you’re doing so over a COM bridge and not calling native JavaScript. Basically that’s MS’s answer if you try to test or access something that’s not a true part of the JScript engine. Very obscure, indeed. - philip On Tue, Jun 16, 2009 at 7:32 AM, Getify Solutions, Inc. <get...@gmail.com>wrote: > > Yes, as I said, the "functions" that the flash plugin exposes on a swf > object in your DOM are not true JS functions, they are special callbacks > handled by the activeX control. There are other things you can normally do > with JS functions, that you can't do with them, like use ".call()" or > ".apply()" on them. It's frustrating. > > In fact, I've filed a bug with Adobe a long time ago on a very similar > topic, they still haven't addressed it: > http://bugs.adobe.com/jira/browse/FP-254 > > So it's not surprising to me that the typeof() is reporting wrong on those > "functions". > > FWIW, CheckPlayer implements logic that continually tries in a setTimeout > loop to call a certain "function" on the swf, with a try/catch, and as soon > as it doesn't catch an error, it knows that the function is ready to go. > You > could try something similar to that. > > --Kyle > > > > > -------------------------------------------------- > From: "marekful" <marek...@sziget.hu> > Sent: Tuesday, June 16, 2009 9:12 AM > To: "SWFObject" <swfobject@googlegroups.com> > Subject: Re: 'unknown' type of members in object in IE > > > > > Actually it's more than just strange... > > > > embedSWF works fine, the flash is displayed in all browsers. > > Then, in a button's onlick handler: > > > > var obj = document.getElementById("myFlashObj"); > > /* > > typeof obj.SetVariable // 'unknown' in IE7, 'function' in FF > > obj.SetVariable // null in IE7, 'function SetVariable { [native > > code] }' in FF > > */ > > obj.SetVariable('myvar','myvalue'); // WORKS in IE7 and FF > > > > > > Any thoughts? > > > > Regards, > > //m > > > > On Jun 16, 2:58 pm, marekful <marek...@sziget.hu> wrote: > >> Hi Kyle, > >> > >> Yes, I've tested the situation with the traditional way and the same > >> happend. > >> No, no forms. > >> > >> The SOLUTION is that there's no need for solution. Earlier, in the > >> original context of the problem, SetVariable didn't work for me in IE > >> but I've been changing things around it. Now just noticed that even if > >> typeof flashObj.SetVariable is 'unknown' and flashObj.SetVariable is > >> null in IE just a line before I call it, it will work in IE as well. > >> > >> Strange.. > >> > >> Thanks anyway for your responses. > >> > >> Best Regards, > >> //m > >> > >> On Jun 16, 2:43 pm, "Getify Solutions, Inc." <get...@gmail.com> wrote: > >> > >> > Yes, you should be able to access the SWF via javascript, regardless > of > >> > embed method. "SetVariable" is a special type of function that flash > >> > registers with the DOM for your SWF. In your description, where it's a > >> > click > >> > handler, it's unlikely that my idea of timing issues is causing the > >> > problem. > >> > >> > Does this same problem happen to you if you do a normal old-school > >> > embed of > >> > the SWF? If so, then it's not SWFObject related. If not, then we may > >> > have > >> > some other things we can try. > >> > >> > Also, are you embedding the SWF inside a <form> element. I know this > >> > causes > >> > issues in IE. > >> > >> > --Kyle > >> > >> > -------------------------------------------------- > >> > From: "marekful" <marek...@sziget.hu> > >> > Sent: Tuesday, June 16, 2009 7:39 AM > >> > To: "SWFObject" <swfobject@googlegroups.com> > >> > Subject: Re: 'unknown' type of members in object in IE > >> > >> > > Hi Kyle, thanks again. > >> > >> > > So two things then: > >> > >> > > 1) Is it meant to be possible in IE to dynamically embed an swf > >> > > (using > >> > > embedSWF) and then use its SetVariable method to update a variable > in > >> > > the flash? > >> > >> > > 2) While the problem in its original context may raise due to > >> > > timings, > >> > > it's unlikely in the simplified version. There I'm trying to use the > >> > > SetVariable function in a button's click event handler way after > >> > > everything should be initialised. > >> > >> > > I've also noticed that the type of the object returned by > >> > > document.getElementById is 'object' in IE while it's also 'function' > >> > > in other browsers. > >> > >> > > On Jun 16, 1:25 pm, "Getify Solutions, Inc." <get...@gmail.com> > >> > > wrote: > >> > >> well, it may be a timing thing. There's a known gap in time between > >> > >> when > >> > >> the > >> > >> swf is embedded on the page and when the external-interface and > >> > >> other > >> > >> functions are initialized and ready. You probably need to wait > until > >> > >> at > >> > >> least domready, maybe even onload. If that doesn't work, you may > >> > >> even > >> > >> need > >> > >> to wait "longer", sniffing the swf to see when the function is > >> > >> ready. > >> > >> CheckPlayer (http://checkplayer.flensed.com) is a companion > library > >> > >> to > >> > >> swfobject which provides functionality like this, such as waiting > >> > >> for the > >> > >> event SWF_EI_READY before trying to call those functions. > >> > >> > >> --Kyle > >> > >> > >> -------------------------------------------------- > >> > >> From: "marekful" <marek...@sziget.hu> > >> > >> Sent: Tuesday, June 16, 2009 7:13 AM > >> > >> To: "SWFObject" <swfobject@googlegroups.com> > >> > >> Subject: Re: 'unknown' type of members in object in IE > >> > >> > >> > Hi, thanks for your reply. > >> > >> > >> > The problem is not accessing the object. (swfobject.getObjectById > >> > >> > also > >> > >> > seems to return the object event if embedSWF was used.) > >> > >> > >> > However, even with getting the object using > >> > >> > document.getElementById > >> > >> > will return the object > >> > >> > BUT > >> > >> > typeof document.getElementById('myObjID').SetVariable > >> > >> > will return 'unknown' in IE (IE7/win) while it returns the > >> > >> > expected > >> > >> > 'function' in other browsers. > >> > >> > >> > Any further ideas, please share with me. > >> > >> > >> > Cheers, > >> > >> > >> > On Jun 16, 1:08 pm, "Getify Solutions, Inc." <get...@gmail.com> > >> > >> > wrote: > >> > >> >> swfobject.getObjectById() is only to be used with static > >> > >> >> embedding. > >> > >> >> You > >> > >> >> are > >> > >> >> doing dynamic embedding with swfobject.embedSWF(). > >> > >> > >> >> If you need to access the object by it's id, use a normal DOM > >> > >> >> access > >> > >> >> method > >> > >> >> like "getElementById(...)" or "all[...]", or better yet, use a > >> > >> >> framework > >> > >> >> like jQuery that abstracts that detail away and access it via > >> > >> >> "$('#...')". > >> > >> > >> >> --Kyle > >> > >> > >> >> -------------------------------------------------- > >> > >> >> From: "marekful" <marek...@sziget.hu> > >> > >> >> Sent: Tuesday, June 16, 2009 5:26 AM > >> > >> >> To: "SWFObject" <swfobject@googlegroups.com> > >> > >> >> Subject: 'unknown' type of members in object in IE > >> > >> > >> >> > Hi all, > >> > >> > >> >> > Using SWFObject.embedSWF (either with version 2.1 or 2.2) i > >> > >> >> > came > >> > >> >> > across the following IE problem: > >> > >> > >> >> > After successfully embedding the flash content, although the > >> > >> >> > SWFObject.getObjectById returns the object in IE and other > >> > >> >> > browsers > >> > >> >> > members of the returned object are 'unknown' in IE. > >> > >> > >> >> > Please see the simplified version of the problem belos: > >> > >> > >> >> > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > >> > >> >> > lang="en"> > >> > >> > >> >> > <head> > >> > >> >> > <meta http-equiv="Content-Type" content="text/html; > >> > >> >> > charset=utf-8"/> > >> > >> >> > <script src="/templates/js/swfobject.2.2.src.js" type="text/ > >> > >> >> > javascript"></script> > >> > >> >> > </head> > >> > >> > >> >> > <body> > >> > >> >> > <div> > >> > >> >> > <div id="playerstat_inner" style="z-index: 100; display: > >> > >> >> > block;"></ > >> > >> >> > div> > >> > >> >> > <script type="text/javascript"> > >> > >> >> > var fa = { id: "ratings_chart" }; > >> > >> >> > var fv = { xml_file: '/templates/embed/empty_graph_data.txt' > }; > >> > >> >> > var fp = { allowscriptaccess: 'always', > >> > >> >> > allowfullscreen: 'false', > >> > >> >> > quality: "medium", > >> > >> >> > salign: "t", > >> > >> >> > wmode: "opaque" }; > >> > >> >> > swfobject.embedSWF('/templates/embed/fcp-line-chart.swf', > >> > >> >> > 'playerstat_inner', '623', '420', '6.0.0', '', fv, fp, > >> > >> >> > fa); > >> > >> > >> >> > var testObj = function() { > >> > >> >> > a = swfobject.getObjectById('ratings_chart'); > >> > >> >> > alert(a?'obj id: '+a.id+' | type of a member: '+typeof > >> > >> >> > a.SetVariable:'obj is null'); > >> > >> >> > } > >> > >> >> > </script> > >> > >> >> > <input type="button" value=" Test " onclick="testObj();" /> > >> > >> >> > </div> > >> > >> >> > </body> > >> > >> >> > </html> > >> > >> > >> >> > I've also tested this in ff3/linux/windows and Safari4/windows > >> > >> >> > with > >> > >> >> > success. > >> > >> > >> >> > Please share any ideas, > >> > >> >> > Cheers > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "SWFObject" group. To post to this group, send email to swfobject@googlegroups.com To unsubscribe from this group, send email to swfobject+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/swfobject?hl=en -~----------~----~----~----~------~----~------~--~---