February 4, 2010

Another problem with Flash - keyboard focus

I consider Adobe Flash to be a virus and have been thrilled that Apple continues to fight against it. The reason I dislike Flash so much is because it breaks fundamental user experience standards, such as:
  • Consistency: The same action should do the same thing in different places. Example: if pressing the down arrow scrolls the web page, then it should always scroll the web page.
  • Modes: Modes are almost always bad - but when you have to have them, make them clearly visible. I.e., the user should know what mode they are in by looking at the screen. Example: if typing enters text in a specific text box, then that text box should be clearly highlighted so the user knows which textbox will get their text.
My problem with Flash is that it breaks these basic design standards. In order to use a Flash plugin in your web browser (like when you watch most videos), you have to click on the video - and Flash then takes complete control over the keyboard (i.e., it takes your "keyboard focus"). This is bad because you can then no longer use your keyboard to do other browser things - such as scroll with the PageUp and PageDown keys, press Ctrl-T to open a new tab, or Alt-LeftArrow to go back to the previous page.

The fact that Flash breaks standard web behaviors is bad enough - but it is even worse because it does so completely invisibly. I get used to using my keyboard to control my web browser because - um, I am a human and I am using my computer. So, sometimes it stops working for no apparent reason. There is no way to see this problem, and the only solution is to use your mouse to click on some non-Flash component in your browser. I bet most people just think that web browers are sucky and inconsistent. The real problem is that Web plugins for common activities that take over they keyboard just shouldn't exist.

Bravo Apple. Let HTML5 and built-in web standards for common activities take over.



Jon said...

Welcome to the Flash sandbox.

Another example (using Firefox): Select some text in Flash, go to the Edit menu, choose ... Oh, oops, the Cut menu option is grayed out. Copy is there, so choose Copy - but nothing gets copied. Well done Flash, you just broke the Edit menu, only the first thing any user learns on a computer.

Another example: you are happily using your scroll wheel, scroll scroll scroll this is fun! Then bang, page comes to a screeching halt. What happened? Your mouse just happened to be positioned so that, through scrolling, it entered Flash, and now Flash is sucking up those scroll wheel events. Well done Flash, you just broke scrolling.

Another example: Select some text in Flash, move the mouse over the text to drag it to the ... Oh, oops, Flash text controls don't support drag and drop. Well done Flash, you broke drag and drop.

Bring on HTML 5.

PS. Is this your second post on the subject? Where's the first?

Ben Bederson said...

Totally agreed. There are many ways that Flash hurts the overall web user experience.

(No, this was my only post on this subject - but I have been ranting about it in person for years!)

Dumah said...

It seems that most things that you describe are the developers that don't provide good UX. Flash gives the developer much freedom to do as they wish. This focus problem has to do the nature of applications just as with Java. There is a reason it is hard for Flash to communicate with the DOM but it is possible. You have to realize these are applications that run inside of a browser. HTML is great at rendering text documents but it is Flash the brings you games and other immersive applications in the browser. Please foster some understanding before the hate.

Adrian said...

The same thing happens with the scroll wheel too. If you're scrolling down a page and your cursor lands over a Flash object, the page stops scrolling because Flash has just stolen the mouse. It's just awful from a usability point of view, there's no two ways about it.

dus said...

can you programm web-games with html5?