google-code-export / swfobject

Automatically exported from code.google.com/p/swfobject
1 stars 1 forks source link

__flash__addCallback "Object doesn't support" error when using swfobject #578

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. embed a video with callback functions using embedSWF
2. open up IE7 or IE8
3. go to page where video is embedded

What is the expected output? What do you see instead?
No errors. "Object does not support this property or method", Line 48 Char 3 
(__flash__addCallback).

What version of the product are you using? On what operating system?
Version 2.2 Windows XP on VirtualBox

Please provide any additional information below.

Original issue reported on code.google.com by Schwerst...@gmail.com on 25 Jul 2011 at 9:38

Attachments:

GoogleCodeExporter commented 9 years ago
If you could post a link to your page / or attach your embed code, then people 
can try to see what is going on. 

I believe this is just an authoring error, but of course we'd like to make sure.

Original comment by aran.rhee@gmail.com on 25 Jul 2011 at 11:17

GoogleCodeExporter commented 9 years ago
Thank you for your quick reply. To make sure the error was not caused by any 
other part of my javascript, I removed everything except for:

swfobject.embedSWF('http://localhost/video/full_browser_player.swf', 
'streamer_video', '100%', '100%', '9.0.0');

Original comment by Schwerst...@gmail.com on 26 Jul 2011 at 7:34

GoogleCodeExporter commented 9 years ago
What do you mean by authoring?

Original comment by Schwerst...@gmail.com on 26 Jul 2011 at 7:41

GoogleCodeExporter commented 9 years ago
Since __flash__addCallback is in your SWF, not SWFObject's codebase, my guess 
is that your SWF is causing the error, not SWFObject.

Try embedding the SWF using the old <object><embed/></object> approach (do not 
include the SWFObject.js file) and see if you still get the JS error.

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" 
height="400">
    <param name="movie" value="myfile.swf" />
    <embed type="application/x-shockwave-flash" src="myfile.swf" width="550" height="400" />
</object>

Original comment by platelu...@gmail.com on 26 Jul 2011 at 8:32

GoogleCodeExporter commented 9 years ago
After more research and testing, the error is caused by the Flash plugin for 
Internet Explorer. That plugin injects Javascript into the page so that it (the 
Flash file) can communicate with Javascript. The error is not being caused by 
SWFObject. 

There are many solutions for this error out there. None of them work for me 
yet, but I will list them in case other people are having the same issue.

Don't put your swf inside a <form> tag
Add an id to your swf
http://code.google.com/p/doctype/wiki/ArticleFixingFlashExternalInterface
http://www.pixelthismobile.com/blog/3/11/2009/external-interface-unspecified-err
or-line-49-char-5

There are more of course, just look for 'ExternalInterface error IE' or 
'__flash__addCallback error IE'

Original comment by Schwerst...@gmail.com on 28 Jul 2011 at 7:26

GoogleCodeExporter commented 9 years ago
If you were cross-domain both the js and swf (for example:
  swf: http://siteA.com/siteA.swf
  js or html: http://siteB.com/siteB.js/html
) you need to add allowscriptaccess:"always" to both attributes and params 
before embedding swf with swfobject.

Example:
var variableObj = {};
var paramsObj = {allowscriptaccess:"always"};
var attributeObj = {allowscriptaccess:"always"};
swfobject.embedSWF(........, variableObj, paramsObj, attributeObj, callBackFn);

IE9-8-7-6 needs <param name="allowscriptaccess" value="always"> in <object> tag.

Good Luck!
-Tolga

Original comment by htbasa...@gmail.com on 29 Jul 2011 at 6:22

GoogleCodeExporter commented 9 years ago
Yeah, I tried that. It isn't a cross-domain issue either, we already solved for 
that but it wasn't the case anyways.

I did find a thread on a forum for Fancy Uploader that suggests it is Flash 
version 10.1 + that creates the error by injecting the markup with its own 
javascript for externalinterface communication

http://digitarald.de/forums/topic.php?id=1826

Even though it was informative, it didn't help since the swf I am using doesn't 
have a 'stop' function...

Original comment by Schwerst...@gmail.com on 29 Jul 2011 at 7:10

GoogleCodeExporter commented 9 years ago

Original comment by platelu...@gmail.com on 30 Jul 2011 at 4:04

GoogleCodeExporter commented 9 years ago
Issue 584 has been merged into this issue.

Original comment by platelu...@gmail.com on 4 Aug 2011 at 4:30

GoogleCodeExporter commented 9 years ago
Could this problem be due to the SWF being loaded before it’s embedded due to 
the SWF being cached in IE7 (and I assume later versions of IE)?

Apparently the fix could be added to SWFObject.

See the discussion at the top of this linked page:

http://www.stevekamerman.com/2007/01/swfformfix-2-0-released/

See also the comments:

Steve Kamerman
January 19th, 2007 at 7:27 pm

Daryl Schwemley
February 20th, 2007 at 9:58 pm

Original comment by she...@coolpage.com on 2 Feb 2012 at 7:54

GoogleCodeExporter commented 9 years ago
found a solution here :
http://groups.google.com/group/glow-users/browse_thread/thread/ec0d2d39feb44a5e

changeinvalid method name in your code.

Original comment by imxi...@gmail.com on 4 Apr 2012 at 12:08

GoogleCodeExporter commented 9 years ago
oh look here

swfobject.js line 424 
else if (i.toLowerCase() != "classid") {
                            att += ' ' + i + '="' + attObj[i] + '"';
                        }

edit:

 if (typeof(attObj[i]) !== 'function') {                    
                               att += ' ' + i + '="' + attObj[i] + '"';
                            }

in ie8 attObj hava a funciton indexof 

in firefox ,is no this funciton

ok!

Original comment by chenweih...@gmail.com on 8 May 2012 at 7:20