windbreakerdoss / swfobject

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

Some Flash installs return incorrect version values in Javascript #60

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Summary:
Several machines I tested returned older Flash versions when the version
was checked via Javascript (in FF2/Mac), though checking the version inside
an SWF file always returned the correct version. This is likely a corrupt
install issue or a Flash bug, but perhaps ought to be addressed in
SWFObject as it seems to be a relatively common real-world issue.

Long version:
We are using some functionality that requires FP 9,0,98 in our latest
project. There are six computers in the office (one Windows XP, two
Leopard, three Tiger), all with 9,0,115,0 installed (as confirmed by the
Adobe site and the SWFs in the test suite). But on three of the Tiger Macs
(in Firefox) we were being routed through expressInstall which was hanging
and leaving a big white box on the page.

It turns out all three were reporting older versions (stuff like 8,0,23 or
9,0,45) to the Javascript. This must be an existing Flash bug or corrupt
installs -- SWFObject is in good company because the JS in the official
Adobe version detection kit gave the same bad results.

This bug was live in the wild at Notre Dame (http://www.nd.edu/) for a long
time, it looks like (we never could figure out why their homepage was
requesting a Flash upgrade on some of our office machines).

A super-quick solution to this is to include a basic empty SWF file that
checks the actual version number and returns it to the Javascript before
attempting to evaluate the SWFObject call.

I've never used Flash before but learned enough from googling to create a
3-line Actionscript version that does that:

import flash.external.*; // import external libraries
version = eval("$version"); // grab the version
versionArray = version.split(' ')[1].split(','); // trim off the OS,
explode the version on the commas
ExternalInterface.call("flashVersionIs",versionArray[0],versionArray[1],versionA
rray[2],versionArray[3]);

which calls the JS function
flashVersionIs(majorVers,MinorVers,MajorRev,MinorRev).

I'm sure someone closer to the project and/or better with Flash could come
up with a tighter version that integrates nicely with the SWFObject
initialization process. Adobe will hopefully address the bug before long
but as long as its out there it does represent a real-world problem.

Original issue reported on code.google.com by donaldwh...@gmail.com on 29 Mar 2008 at 12:33

GoogleCodeExporter commented 9 years ago
Thanks for the great issue description.

It is a known issue, also logged under:
http://code.google.com/p/swfobject/issues/detail?id=38 and
http://code.google.com/p/swfobject/issues/detail?id=39

For now we are not going to anticipate on corrupt installers, mainly because 
the cure
is simple (Adobe has just to replace the installers and all will be solved) and 
the
implications for SWFObject would be big.

We forwarded our findings to Adobe (logged as issue 217720) and added Q2 and Q3 
to
our FAQ: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_faq_web_authors

Now, I expected that this would have been solved by now. I will ping the Flash 
Player
team again and ask what takes them so long...

Original comment by bobbyvandersluis on 29 Mar 2008 at 11:33