Opera Dragonfly: is Opera abandoning accessibility?
Friday, 28. March 2008, 06:55:25
A fast-flying long-bodied predatory insect of the order Odonata, suborder Anisoptera. Valued by humans for their ability to spot and hunt down harmful bugs from great distances
For a while now, Opera has had a teaser page up for Opera Dragonfly. Last I looked, it had nothing but a nice image, and a dictionary definition for Dragonfly that is obviously intended to create some buzz — successfully so, since it triggered a thread on the My Opera Community forums, with a lot of speculation, and Opera Watch asking What is Opera Dragonfly? referring to an equally teasing blog post by David Storey. Opera, meanwhile, still ain't telling.
Now I'm not the type to check such a teaser page every day, but this morning I discovered the Opera Dragonfly page has acquired a form where you can subscribe for an e-mail list to receive news about Dragonfly and other upcoming Opera products — if you don't have any visual impairments that is.
What really bugs me is that this sign-up form is totally inaccessible:
- no label tags for any of the input fields
- JavaScript-controlled "prompts" inside the fields, that confusingly stay as part of the content on focus when JavaScript is not active; even when JavaScript is enabled, that text is not a substitute for label tags
- text/prompt color inside the entry fields has way too little contrast with the background
- text in all text fields is confusingly right-aligned
- a visual (image) Captcha to reliably keep out anyone who needs a screen reader, without any alternative
- the image used for the submit button doesn't have an alt attribute (required)
That's really shocking. Are new Opera products not intended to be accessible? If they are, why are they excluding a good part of their target audience?
Generally Opera is quite standards-savvy and My Opera provides a framework that is close to completely accessible (just a few minor things to fix, really) - one of the major reasons why I chose to set up a photo album and blog here. For anonymous comments we even get textual Captchas that are accessible. So some people within Opera at least know how to do accessibility.
This subscription form may look "cool" to those of us who are blindless but it isn't cool to be inaccessible! Whoever designed this form is apparently totally ignorant of even the basics of accessibility, or plain doesn't care.
Let's see... there's a comment at the end of the page:
<!--
-* Generated by mod-xslt 1.3.9; http://www.mod-xslt2.com/
-* Copyright (C) 2002,2003 Carlo Contavalli - <ccontavalli at masobit.net>
-* derived from work by Philipp Dunkel and others (http://www.mod-xslt2.com/main/credits.xml)
-* Thanks to http://www.masobit.net/ for paying me while working on mod-xslt
-* and for providing resources to the project. -->
That would mean that either the XML source Opera uses is missing the necessary accessibility features to be translated into an accessible form by mod-xslt2, or the module itself isn't capable of producing accessible forms - or both.
There really is no need for a secure form to be inaccessible, and Opera knows it, as evidenced by the blog comment forms. So how did this one get past QA at Opera??
















GoJoeGo # 28. March 2008, 11:11
Hyperbole, much?
"is Opera abandoning accessibility?"
JavaWoman # 28. March 2008, 13:08
With an inaccessible form like this Opera is sending a clear message that people who need accessible software and an accessible web need not be interested in Dragonfly and "upcoming Opera products".
Now where is chaals when we need him?
chaals # 28. March 2008, 15:08
JavaWoman # 28. March 2008, 15:19
dstorey # 28. March 2008, 16:06
JavaWoman # 28. March 2008, 16:25
dstorey # 28. March 2008, 23:46
We've updated the rest of the page, including using
labelelements for the form fields, changing the contrast around the second paragraph text (and added css3 text-shadow for those browsers that support it), cleaned up the JavaScript, changed the structural markup (including making Opera Dragonfly a h1 element), and added a alt attribute to the submit.Apart from the captcha, that hasn't been updated yet, are the updates ok, and can you see anything else that you'd like to see us look into?
Thanks again for your feedback and spotting this.
JavaWoman # 29. March 2008, 22:12
David, wow, that's fast action! I'm very pleased to see Opera are taking this so seriously.
I fully understand the need for some spam protection, but the problem with a graphical Captcha is that it's essentially inaccessible. So if you can replace that with the module used in My Opera that will be great.
I had a quick look at the page's new markup and it's greatly improved. You even fixed the headings (which were a minor problem I didn't even point out), all input fields have a label, and the image button has a correct alt attribute.
But we're not quite there yet. A few use cases:
display: block;for all labels, so each field will be announced with the prompt.Looking at the visual layout, I see no prompts (labels), and looking at the Dragonfly.js script, it's easy to see why. What it does is it takes the text of each label and copies it as "value" into the entry field it belongs to (nice touch). But it also hides the label itself with
labels{i}.style.display='none';(I had to replace square brackets with braces to get around My Opera's parser hereThe problem with in last case is that display: none removes the element it's applied to completely from the text stream, and current screen-readers are standards-compliant enough that they implement this correctly now. And it does not matter whether this styling is applied via CSS or JavaScript. As a result, for everyone using a modern screen-reader, having both CSS and JavaScript enabled, there still are no labels for any of the input fields.
What you really want to do is move the labels visually out of the way, without making them inaccessible. I think the form would be a little more usable with simple visible prompts, but if you really want to have the esthetics as originally designed here, you can accomplish that without making it inaccessible. Just move the labels off-screen with absolute positioning: that way they won't be visible but they will still "exist" in the text stream and thus be read by a screen-reader.
Have a look for instance at this article: Accessible Dynamic Links - it's not about form prompts, obviously, but explains quite well the difference between hiding something with
display:noneand making it invisible by moving it off-screen, and when each is useful: sometimes you do want to make elements disappear completely, and that's whatdisplay:noneis good for, but sometimes you merely want them to make them visually disappear but keep them (literally) still accessible, and that's what moving them off-screen is good for.You might also want to read my post Skipping along where I also pointed out that it's still a wide-spread misunderstanding that elements "hidden" with
display:noneare still available for people who use a screen-reader - but they are simply "not there". (It was true for older versions of screen-readers, which are still in use, but all current versions are standards compliant in this.)Still, structurally the page code has been greatly improved, and the JavaScript only needs a small tweak.
Note: I haven't looked at the contrast yet - I don't have all my tools available yet on the new MacBook I'm using now, but I'll see what I can do tomorrow, otherwise I'll look when I'm back in Amsterdam.
(Now, let's hope my borrowed Wifi connection plays nicely and lets me post this!)
dstorey # 30. March 2008, 10:02
JavaWoman # 30. March 2008, 15:32
Meanwhile I've installed (portable) Firefox on my MacBook with the Firefox Accessibility Extension and the WAVE toolbar. The latter showed me what I'd missed yesterday just looking at the code: while the HTML code structurally makes sense with an H1 heading, that is also made to disappear with a
display: nonein the stylesheet. Same fix: more it off-screen instead.BTW, just in case: both
display: noneandvisibility: hiddenshould be avoided for those elements that should disappear from view only but should remain present and accessible in the text flow.Next week is soon enough.
JavaWoman # 31. March 2008, 17:38
What I found (back) is that support for it is still incomplete in IE6 and IE7, but the problem is mainly with a combination of line-height and replaced content (images) in the same element, also mentioned in the matrix on webdevout.net.
That said, in your blog the actual text of H1 heading and subtitle do disappear in IE6 (don't have IE7 to test with), but the subtitle image overlaps most of the H1 image.
(That's probably still better than my tweaked top bar which disappears entirely in IE6.
Anyway, best to check resultant layout in IE6 and IE7 if you're using line-height + height to make text disappear from view. Or use one of the other techniques to make text disappear from view (absolute positioning, padding, text-indent).
dstorey # 31. March 2008, 18:57
As for my blog, it is probably more an issue with not testing in IE6. I upgraded to IE7 so haven't been able to test. It works in IE7 and most of my audience is likely to not use IE6 (and as I'm not a big company ,my branding isn't very important
JavaWoman # 31. March 2008, 19:12
I'm not a big company either, so I'm taking some leeway with styling here, but having an accessible blog is important for my "branding" anyway. IE6 usage currently shows as only 1% in my statistics, but I'd better ask someone to have a look with IE7 until I'll have that installed on my MacBook.
But Opera is a big (or biggish) company and my impression is it considers its branding quite important.
Glad to hear you're working on it — please let me know when I should have another look!
JavaWoman # 1. April 2008, 21:16
display: noneandvisibility: hiddenwas spot-on but has been overlooked anyway!CSS for the heading now reads:
which still makes it disappear completely instead of moving it off-screen so it's still available...
Replacing one problem with another is not a solution — I hope that's another April Fools' day joke?
dstorey # 1. April 2008, 22:00
JavaWoman # 7. April 2008, 12:17
Don’t hide it, move it!
More than one week after Opera's first fast action to rewrite the HTML (or underlying XML) for the page, let’s see where we stand now:
Maybe I’m impatient (OK, I am getting impatient), but it looks like — after an initial fast action to change the HTML showing good intentions — nobody’s actually been doing anything for a whole week. So what message is that sending now?
Maybe two quotes from right here on My Opera can help a little bit to prod you into action again:
So, let’s please make clear labels a little less of an oddity (hidden labels aren't clear!), and let’s replace that nightmare by an accessible version!
Not necessarily all at the same time, but it would be great if we could see something is actually being done after that first flurry of activity at the end of last month.
JavaWoman # 9. April 2008, 17:18
Good! We've got a header now:
Labels next?
dstorey # 10. April 2008, 01:11
I assure you it is a priority, and I'll let you know when everything is ready. I promise that the Opera Dragonfly site itself will be accessible to the best of our abilities when it launches as well.
Thanks,
David
JavaWoman # 10. April 2008, 13:27
Thanks for the update, David. I do trust this page will be fixed. But my point is this: unlike the Opera Dragonfly site, this site is already out there and clearly intended to draw attention. So — excuse the (unintended) pun — I would suggest that merely saying this has priority is not quite enough: visibility matters.
I also think this case is a nice illustration of the fact that it is far more cost-effective to design with accessibility in mind right from the start, rather than to have to go back and repair what's broken when it's already released. With the Opera Dragonfly site you still have that option (or at least relatively so, since it's not out there yet). With this site no more, and never mind that it's only a single page: it is your shop window now.
I'm planning to sign up for that newsletter as soon the page is fixed.
dstorey # 11. April 2008, 14:38
JavaWoman # 11. April 2008, 17:51
JavaWoman # 20. April 2008, 17:06
While we're wating for the visual CAPTCHA to be replaced by the accessible variant already used in My Opera, here's an update on the color contrast.
The Firefox Accessibility Extension was complaining that the contrast (the green color used for text inside the white form fields) was not sufficient, but it doesn't make it very clear what, exactly, it is measuring.
Juicy Studio has an online Colour Contrast Analyser that not only clearly explains the colour contrast algorithm suggested for Guideline 2.2 of the Web Content Accessibility Guidelines 1.0 but implements it as well. All you need to do is plug in forground and background color codes and it will tell you how that performs.
Visually, I thought the color contrast in the entry fields was borderline, and when I plugged in the colors used (background #fff and foreground #72a530), I found that confirmed: the brightness difference is 118, just below the threshold of 125, while the color difference is 438, below the threshold of 500.
Just a little bump in contrast should do the trick then; use the Colour Contrast Analyser to see how you're doing before plugging it into the page.
dstorey # 20. April 2008, 20:27
Thanks for pointing out the colour contrast analyser. I'm a bit sceptical of online automated accessibility analysers,but it'll be well worth checking out.
On the accessibility front, I believe we have some good news to pass on soon with something my team has been working on for quite a while.
dstorey # 24. April 2008, 08:43