A few thoughts:

1. True, ~1% of people on the regular (not mobile) web don't already have 
Flash. BUT, of that 1%, have you stopped to consider what percentage of them 
don't have flash because they've simply never been asked or have never cared 
before now? I'd wager that almost all the 1% of people that don't have Flash, 
don't have it for a *reason*, like their computer won't allow it, or their 
sysadmin won't, etc. So, you're really not even targeting behavior for 1% of 
the web, it's more like 0.1% or less. That's pretty niche.

Consider the mobile market too.... a large percentage of them don't have flash 
(iOS), BUT they cannot get flash, no matter what you do. So, even trying to do 
so for them is worse UX than handling it gracefully with your own "alternate 
content".

Bottom line: I seriously doubt there's hardly anyone out there without flash, 
who can (and will) install flash, simply because you are the first one to ask 
them politely enough to do so. Those without flash probably have a reason, 
which your site is unlikely/unable to trump. 

Kinda the same as whining about IE6 these days. Those still with IE6 are those 
who have to be, for some bigger reason, and complaining about it, or even 
trying to be "cute" and prompt them to upgrade, is really often more annoying 
to them, since they probably know the boat they're in, and you bugging them 
about it is pointless.


2. Your "alternate content" in fact gives them the hard-stop that you're 
looking for (if you design the site properly for that case). It says "flash is 
missing" (because if flash is present and upgradable to your version check, 
they still won't see that content). If the "flash is missing" message makes it 
clear that Flash is indeed required, and that by not having Flash, they cannot 
continue, then I think you've fulfilled that goal. And that's exactly how core 
SWFObject is designed to work.


3. For the "make it as easy as possible to install" thing... most browsers are 
de-emphasizing the idea of inline installing of extensions/plugins (security 
reasons), so I think this type of behavior is definitely legacy at best. It 
should be more than enough to provide a link to the download page. Odds are, 
(as I said above) they probably can't download it anyway, so going to extra 
effort to make it slightly more graceful is probably wasted effort. Why don't 
you wait to see if you ever get even 1 single complaint about that, THEN figure 
it out? Seems like this might be beyond due diligence and into premature 
optimizations. Just some food for thought.


4. What you're asking for sounds more like the SWFObject static-embed 
functionality than dynamic embed. Not sure which you're using, but with static 
embedding, this should be fairly trivial to accomplish (with dynamic embedding, 
you have to go through the ugly hoops that Aran described).

Static embedding works by you putting the <object> code (FYI: we no longer use 
<embed>) into your page's HTML markup, and then calling SWFObject to tell it to 
either replace that markup with alternate content (if the flash version is 
insufficient) or to make sure that the embedding is correct and then let it 
proceed.

If you were to include that content by itself, without swfobject.js included, 
then you'd get exactly the behavior you mention, the broken puzzle piece icon 
thing with inline prompting to download. If you include swfobject.js in your 
page, but you don't call `registerObject()`, you get exactly the same behavior. 
The problem is that once you call registerObject(), SWFObject will either let 
the flash play if the plugin is there, or it will replace it with content -- 
not what you want.

However, you can conditionally call registerObject only if flash is present, 
and if it's not present, then the markup will remain untouched by SWFObject, 
giving you what you want in both cases.

So, combining the two approaches, the solution is trivial:

1. include the static embed markup (use the code generator) in your HTML
2. include swfobject.js
3. in your script code, say:

if (swfobject.hasPlayerVersion("0.0.0")) {
    swfobject.registerObject(...);
}


If flash is installed and the version check passes, then swfobject will take 
over the markup and do version testing for your ExpressInstall upgrade paths, 
etc. If flash is not present, or the version check flat out fails (corrupt 
plugin), then swfobject will not touch the markup, and the browser should take 
over and do whatever it normally does with raw HTML markup for a flash object.


--Kyle






From: Aran Rhee 
Sent: Thursday, June 16, 2011 3:35 PM
To: [email protected] 
Subject: Re: [SWFObject] Re: Flash detection


Brad. 


I'll mention your request to the team. Feel free to post a enhancement here:
http://code.google.com/p/swfobject/issues/list


I still feel SWFObject is the best library to use for embedding Flash (whether 
you choose to use the degrading features or not).


Have a look at the API. I think you could use something like:


var playerVersion = swfobject.getFlashPlayerVersion(); // returns a JavaScript 
object
var majorVersion = playerVersion.major; // access the major, minor and release 
version numbers via their respective propertiesbased on the result of that, you 
could then decide what you wanted to write to the page (embedSWF() call if they 
have a version of Flash you support, otherwise write something to the page 
which will invoke the standard browser download prompt process).




Cheers,
Aran



On Thu, Jun 16, 2011 at 3:22 PM, Brad Wood <[email protected]> wrote:

  > So the question to your marketing guys is: what do you really want to
  > achieve? Do you want to show content to your web visitors, or do you want
  > them to be driven away to download something before they can view anything
  > on your site?


  Well, since our site has training videos and audios which are only
  accessible via our Flash player (that people have paid us to have
  access to), I think the answer is we want a hard stop that makes it
  clear that our site will be useless without Flash.  And secondly we
  want it to be as easy as possible for them to know what to do to
  remedy the situation.  i.e.  Showing a link that says 'click here to
  download Flash' is a good start, but actually beginning the Flash
  download right then and there is the best option.  (for us anyway).


  > Keep in mind that not all browsers can install a plugin seamlessly and users
  > will have to download a file, close their browser, install the plugin and
  > restart the browser.


  Understood, but you have to break an egg to make an omelet.  We
  advertise that Flash is a requirement to use our site.  If they are
  going to have to install it, we might as well make it as easy and
  automated as possible.


  > As a possible solution, you could do a little bastardization and put in a
  > standard object/embed in your alt content <div> (maybe a really small /
  > invisible swf), which would invoke the browser download prompt... This way
  > you could still show the user some useful content in the alt div, which
  > invoking the download prompt as well.


  Hmm, that's not a bad option.


  So, I think I have my answer, and in short it is "no".  I can
  definitely understand the goal to degrade nicely and it does make a
  great deal of sense especially if the Flash content has an alternative
  method of being served or is not mandatory for the page to be
  functional.  I do think there would be usefulness to have a
  configuration option in SWFObject where I could specify that the Flash
  was required on the page, and I intended for the default behavior
  (missing plugin prompt) to occur.

  Of course, it's also entirely possible that I'm misusing SWFObject.
  My intentions have little to do with degradation and more to do with a
  cross-browser library which will guarantee my Flash content shows up
  in as many places as possible, and if necessary enable the user to
  procure Flash in the most pain-free way possible.  If you have any
  other suggestions for libraries which are more centered around getting
  your users Flash, then degrading when they don't have it, then please
  let me know.

  Thanks!


  ~Brad

  --
  You received this message because you are subscribed to the Google Groups 
"SWFObject" group.
  To post to this group, send email to [email protected].
  To unsubscribe from this group, send email to 
[email protected].
  For more options, visit this group at 
http://groups.google.com/group/swfobject?hl=en.





-- 
You received this message because you are subscribed to the Google Groups 
"SWFObject" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/swfobject?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"SWFObject" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/swfobject?hl=en.

Reply via email to