Flash with Standards

I hate Flash.

There, I said it. I’m glad I said it and I won’t take it back. Oh, there is nothing more loathsome than waiting ten hours for a web page to load only to have a Flash enabled splash page appear that says “Click here to enter the site”.

😡 Grrr! I just typed in the address up there and either clicked the “Go” button or hit “Return”! I don’t want to click there just to enter the site I thought I was already entering.

I also just LOVE when I get referred to this great hilarious web animation and I wait fifteen hours for it to load and then a “PLAY” button appears. Do you think I want to play the stupid show since I just waited twenty-two hours for it to load? Don’t make me click a button to do what I already want to do. By the way, here are some Flash monstrosities that are not funny (and never were):

  • End of the World
  • Anything from JibJab
  • Vulgar squirrel thing
  • Anything else you got in your email because I’ve already seen it from two hundred other people that thought they got it in their email first

Flash is evil! Flash is stinky! Flash’s mother is so stupid that she stared at a can of orange juice because it said “concentrate”. (Sorry Mr. T).

All that being said, I must admit my hatred of flash is mostly due to its misuse. A small and quickly loaded animation can make a nice header if it stops animating and lets me read the page and its powerful scripting can be useful (even though I’ve never had a use for it).

Here’s the trouble with it: The code that Flash outputs is not standards compliant and embed tags do not validate because they are not part of the XHTML standard.

Some standards compiant techniques have popped up including Flash Satay (which causes you to create a pre-loader flash file that loads the main Flash content or the user stares a an empty space until the Flash object loads completely), the Unobtrusive Flash Object (which relies on JavaScript being enabled) and Nested Objects with conditional comments to switch between IE and everyone else.

Nested objects is my favorite of the three and works like this:
<object classid="clsid:d27cdb6e–ae6d–11cf–96b8–444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="150" height="150">
<param name="movie" value="examplea.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<!––[if !IE]> <––>
<object data="exampleb.swf" width="150" height="150" type="application/x–shockwave–flash">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
This content is only available if both objects fail to load.
</object>
<!––> <![endif]––>
</object>

A chart with the results of all of the methods was posted by Andrew Kirkpatrick & Bob Regan here.