Flash allows us to create web applications that would be impossible without, but this currently comes at a high price: The browser integration of a Flash application sucks. Here are a few typical situations:
– You’re on a website that happens to be fully built with Flash, happily browsing, and you want to go one page back, so you click the browser’s back button. Instead of going where you want to, you end up leaving the site altogether.
– You’re browsing a blog with embedded videos. You’re scrolling down using your mouse’s scroll wheel and then click the video to make it start playing. Then you try to continue scrolling, but nothing happens. You have to click on the text around the video for scrolling to function again.
– Instead of using the classic HTML form, the site you’re trying to register with has a Flash form. Because of this the Tab button doesn’t work, and you don’t have helpful suggestions that appear as you type. Then once you are registered and want to sign in, inexplicably your browser doesn’t offer to remember your password.
– ok, one more: ever tried using the Firefox classic middle click to open a link in a new tab on a fully Flash website. You know what happens? Nothing.
How did we end up in this situation? What you see as Flash on the web is an object embedded in a web page. Your browser recognizes the type of of the object, and loads it with the appropriate plugin, namely Flash. Now, depending on who got the last mouse click, either the page hosting the embedded object or the embedded object can have focus and catch user interaction events such as keystrokes and mouse movements. So when the embedded object has the focus, the browser has no idea what the user is doing. This is grudgingly acceptable for an embedded video, but you end up with the aforementioned user experience disasters if you start using Flash for your whole website.
So, what to do if you want to use Flash and not alienate your users? You could lean on Adobe and the browser makers to get their act together. This would be the best, but doesn’t take care of here and now. The other solution is to work around these limitations with good design and some extra programming. You use deeplinking to make sure the back button works, and catch user interactions such as a middle click and mimic the expected behavior using JavaScript. This sounds like a lot of work, and it is, but some of the work has already been done for you. Flex has a history manager, for example. I also push for these kind of developments at http://silex-ria.org, and while the user experience is not yet as seamless as it could be, it’s moving slowly towards that goal.

Pin It