tags:

views:

666

answers:

6

Usually Flash and Flex applications are embedded on in HTML using either a combination of object and embed tags, or more commonly using JavaScript. However, if you link directly to a SWF file it will open in the browser window and without looking in the address bar you can't tell that it wasn't embedded in HTML with the size set to 100% width and height.

Considering the overhead of the HTML, CSS and JavaScript needed to embed a Flash or Flex application filling 100% of the browser window, what are the downsides of linking directly to the SWF file instead? What are the upsides?

I can think of one upside and three downsides: you don't need the 100+ lines of HTML, JavaScript and CSS that are otherwise required, but you have no plugin detection, no version checking and you loose your best SEO option (progressive enhancement).

Update don't get hung up on the 100+ lines, I simply mean that the the amount of code needed to embed a SWF is quite a lot (and I mean including libraries like SWFObject), and it's just for displaying the SWF, which can be done without a single line by linking to it directly.

A: 

Why would you need 100+ lines of code? Using something like swfobject reduces this amout quite some (and generally you don't want to do plugin detection, etc. by hand anyway).

ujh
+3  A: 

You also lose external control of the SWF. When it's embedded in HTML you can use javascript to communicate with the SWF. If the SWF is loaded directly that may not be possible.

Your 100+ lines quote seems pretty high to me. The HTML that FlashDevelop generates for embedding a SWF is only around 35 lines, with an include of a single swfobject.js file. You shouldn't need to touch the js file, and at the most would only have to tweak the HTML in very minor ways to get it to do what you want.

Herms
+3  A: 

In my experience not all browsers handle this properly. I'm not really sure why (or which browsers) but I've mistakenly sent links like this to clients on occasion and they've often come back confused. I suspect their browser prompts them to download the file instead of displaying it properly.

grapefrukt
+1  A: 

One upside I can think of is being able to specify GET parameters in the direct URL to the SWF, which will then be available in the Flash app (via Application.application.parameters in Flex, not sure how you'd access them in Flash CS3). This can of course be achieved by other means as well if you have an HTML wrapper but this way it's less work.

hasseg
+6  A: 

Upsides for linking directly to SWF file:

  • Faster access
  • You know it's a flash movie even before you click on the link
  • Skipping the html & js files (You won't use CSS to display 100% flash movie anyway)

Downsides:

  • You have little control on movie defaults.
  • You can't use custom background colors, transparency etc.
  • You can't use flashVars to send data to the movie from the HTML
  • Can't use fscommand from the movie to the page
  • Movie proportions are never the same as the user's window's aspect ratio
  • You can't compensate for browser incompetability (The next new browser comes out and you're in trouble)
  • No SEO
  • No page title, bad if you want people to bookmark properly.
  • No plugin information, download links etc.
  • If your SWF connects to external data sources, you might have cross domain problems.
  • Renaming the SWF file will also rename the link. Bad for versioning.

In short, for a complicated application - always use the HTML. For a simple animation movie you can go either way.

Eliram
A: 

Adobe should be ashamed of themselves with the standard embed, which defeats the puprose of convention over configuration. Check ^swfobject (as mentioned above) or swfin

featureBlend