Accessibility: Improved ARIA Support in the IE8 RC
Hi, my name is Tony Ross and I’m one of the Program Managers for Internet Explorer. As JP mentioned in an earlier post, the IE Team has been working to make IE8 the most accessible web browser possible. We have also been working on improving interoperability and making things easier for web developers. Following these goals, I want to introduce you to a change we’ve made in the RC aimed at improving our support for ARIA, a syntax for making dynamic web content accessible. I’ll walk you through what IE did before, what IE does now, and what this change means overall.
What did IE do before?
We added support for ARIA in Beta 1, but some differences in syntax existed depending on the browser mode. In IE8 Standards Mode you could access ARIA attributes from script using the syntax defined in the standard:
value = elm.getAttribute("aria-checked");
In the compatibility modes, IE7 Mode and Quirks Mode, you needed to use a camelCased version of the attribute name:
value = elm.getAttribute("ariaChecked");
You may find the different syntax odd at first, but it results from how IE handles attributes and properties. Properties exist on script objects and are of the form elm.property. As a convenience to developers, IE automatically maps attributes to properties. When the name of a native attribute contains a dash, IE adjusts it to produce acceptable property syntax:
value = elm.ariaChecked;
Without this adjustment, each dash in the name would be treated as a minus sign by the script interpreter:
value = elm.aria-checked; // Attempting to access a dashed property
value = elm.aria – checked; // What the dash means to the script interpreter
Older versions of IE and the compatibility modes in IE8 use the same name for both properties and attributes. Consequently, adjusting the name for properties affects the getAttribute syntax as well. This adjustment applies to all native attributes with dashed names, not just those that are part of ARIA. IE does not alter unrecognized attributes, and will leave names like “foo-bar” alone. IE8 Standards Mode avoids this conflict altogether by maintaining separate names for attributes and properties.
What does IE do now?
We did not initially support the standardized ARIA syntax in IE7 Mode or Quirks Mode due to the issue mentioned above. Backwards compatibility is paramount for these modes, so we are cautious about making changes to their behavior.
Later we received feedback expressing concerns about having different syntaxes for ARIA. This feedback came from web developers, Assistive Technology Vendors, and members of the standards community. Their concerns primarily focused on pages not ready to run in IE8 Standards Mode, where adding ARIA support would require choosing one of the syntaxes or doing extra work to support both.
Based on this feedback, we reexamined IE’s handling of ARIA. Older versions of IE do not have ARIA support. They treat ARIA attributes as unknown and do not camelCase their names. This means that script can manipulate ARIA in these versions using the standardized syntax, although the information is not exposed via APIs like Microsoft Active Accessibility (MSAA).
Taking this information into consideration along with the feedback we received, we decided changing IE8’s behavior was the best option. IE8 will now preserve the dash for ARIA attribute names in all modes. As part of this change, we are eliminating camelCased ARIA properties to avoid the naming conflict discussed above. You now only need to use the standardized syntax to add ARIA support in IE8, no matter which browser mode is being used:
value = elm.getAttribute("aria-checked");
What does this change mean?
For Web Developers
This change should make using ARIA in your pages even easier. We have removed the need to support multiple syntaxes for ARIA and have left you with just one.
- One syntax that works across all IE8 modes
- One syntax that is interoperable with other browsers
- One syntax that is consistent with the standard
For End Users
This change should make even more sites accessible in IE8 because all IE8 modes now support the ARIA standard.
For ARIA
This change should help increase the adoption of the standardized syntax for ARIA, since developers no longer have to worry about dealing with an alternate syntax.
Conclusion
We’ve taken the multiple syntaxes for ARIA supported by IE8 since Beta 1 and reduced them down to one that is consistent with the standard. We’ve made this change because we believe it will have a positive impact on developers, end users, and ARIA in general. As always, we are grateful for the feedback we receive from the community as it plays a key role in making these types of decisions.
Tony Ross
Program Manager
Comments
Anonymous
January 16, 2009
Recently, i was trying to work with IE tabs. I was surprise to learn that MS did not put full support in working with IE tabs. I was trying to switch IE tabs programmatically but there is nothing available. Only thing that can work is sending keys which is very unreliable hence cannot be used. I hope IE 8 might solve that problem and support the developers by making APIs available to switch IE tabs in windows applications.Anonymous
January 16, 2009
Yeah this has been missing since IE7. Then again I would be a bit weary of trying to control multiple tabs since IE has issues with improperly cloning the JavaScript Window hierarchy in IE7 and IE8 (confirmed to remain broken in IE8 RTM) https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=384843 I'm sure if they exposed an API to create and manipulate tabs there would be some issues to deal with. Since IE8 is almost at the RC stage I highly doubt that any API exposure will be made available any time soon. The good news is that handling tabs in say Firefox is a piece of cake, complete with an API.Anonymous
January 16, 2009
> One syntax that works across all IE8 modes Is this consistency only for ARIA attributes, or for all attributes? If it's only for ARIA it seems like you have made things more inconsistent.Anonymous
January 16, 2009
Thanks. reasons_IE_is_evil--;Anonymous
January 16, 2009
http://blog.seattlepi.nwsource.com/microsoft/archives/159663.asp?source=mypi "Microsoft said this morning that the European Commission had issued a statement saying that its "preliminary view" was that the inclusion of Internet Explorer in its operating systems violated European law." Bundling IE in Windows to stifle competition, choice and innovation is illegal now.Anonymous
January 16, 2009
to "IE bundling is ILLEGAL" If IE was not bundled with Windows, how would you visit Mozillas page for downloading Firefox? Right, you would FTP it. Except that you can't FTP it either, because you have no FTP clients installed... and you don't have a browser to visit any websites from where you can install any. WHOOPS.Anonymous
January 16, 2009
@IE bundling is ILLEGAL: Right. And, I suppose Apple doesn't bundle Safari and *nix doesn't bundle Firefox or something else to browse with. Oh, but I see the greeaaat logic in assuming that Microsoft will bundle something OTHER than their own browser just to make a few bitter people happy. The European Union is pulling a smart on there. What is this world coming to? I can see it now: "Intel ships own chips on motherboard -- sued for not offering AMD and NVIDIA alternatives."Anonymous
January 16, 2009
It's a great news you decided to follow existing standard and stick to the way other browsers are already handling ARIA attributes. On the sidenote, you guys must have a tough skin as even the news about IE actually FOLLOWING the standard must be always accompanied by dozens of not-so-relevant-right-now comments about the browser's failures ;). Keep following the standards and thanks for what's been already done with IE8 in this regard.Anonymous
January 16, 2009
I'm currently working on an AJAX based chat room and I'm wondering for the blind if I could use ARIA to have the screen reader read new messages that appear on the screen in a different element. Each message has it's own id attribute with a unique value so to select the id of the divisible layer I would use document.getElementById('row_238'). When referencing that element (or to software programmers the "node" in JavaScript) what in JavaScript would I do to trigger ARIA to have the screen reader read the element's text out loud? I'm running IE8-RC1 so what software would I need to emulate what a blind user would be using so I could get IE8 to read the chat message out loud on my own computer? Thanks in advance!Anonymous
January 16, 2009
JABCreations, since IE8-RC1 hasn't been released yet, you're not using it. Are you using the December build from Connect?Anonymous
January 16, 2009
@Dan, then what was that build called? I don't recall anyone referring to it as Beta 3?Anonymous
January 16, 2009
http://news.cnet.com/8301-10805_3-10144833-75.html "We think it is right of the EU, for the sake of the consumers, to be concerned about someone potentially misusing their competitive power," Chief Development Officer Christen Krogh told CNET News. The EU action stems from a 2007 complaint by Opera. "On behalf of all Internet users, we commend the Commission for taking the next step towards restoring competition in a market that Microsoft has strangled for more than a decade, wrote Jon von Tetzchner, Opera's CEO. "The Commission's Statement of Objections demonstrates that the Commission is serious about getting Microsoft to start competing on the merits in the browser market and letting consumers have a real choice of Internet browsers."Anonymous
January 16, 2009
On Connect, it's called the "IE8 Partner Build". Microsoft says that the actual RC build is due later this month... http://bx.businessweek.com/apple/browser-showdown-at-the-churchill-club-ie-8-release-candidate-coming-this-month/6800630611208153745-3f61331535838927753ab9837bf34389/Anonymous
January 16, 2009
Anyone notice that Firefox, Google and Safari have had no problems getting more share in the browser market, but whiner Opera is still stuck under 1%? Methinks maybe they should spend more time listening to users and less time complaining to big government.Anonymous
January 16, 2009
Thank you for taking this important step! This will certainly make it easier for developers to make accessible web application.Anonymous
January 16, 2009
Well done! My understanding was the previous situation was a limitation of how attributes and property lookups in general were handled; does this affect non-ARIA attribute names? Hacking that to specifically and only support ARIA seems like a lot of trouble to preserve more incompatibilities and non-conformance, and I hope you haven't done so but rather supported all attributes of this form.Anonymous
January 16, 2009
Thank-you - this'll make ARIA support significantly simpler :)Anonymous
January 16, 2009
The comment has been removedAnonymous
January 17, 2009
@JAB Creations: Its called IE8 PR1 short for Internet Explorer 8 Partner Release 1. The RC1 (Release Candidate 1) is due out sometime this quarter. (depending on the number of bugs/fixes/and critical issues in the RC1, there may be an RC2,RC3 etc.) Finally, IE8 RTM (Release To Market) will be released at which point regular users can go download and install this final build (and IT admins can block it if it trully breaks their in-house apps due to bad design or lack of forward portability) Personally, I wouldn't touch any web application that didn't work in multiple browsers, those that did in the past are feeling the pain now.Anonymous
January 19, 2009
Fino a qualche mese fa, non ero a conoscenza di queste specifiche ( Accessible Rich Internet ApplicationsAnonymous
January 20, 2009
It's great to see the team responding to feedback. Following the "standardized syntax" means that more developers will implement ARIA and more users will benefit. @JAB Creations: I concur with Benjamin Hawkes-Lewis; the beauty of ARIA Live Regions is that you can instruct the screen reader (or other assistive technology) to announce new content inside the chat area rather than dealing with every new piece of dialog.Anonymous
January 21, 2009
It's a great news you decided to follow existing standard and stick to the way other browsers are already handling ARIA attributes.Anonymous
January 25, 2009
I am new to computers I am having trouble connecting to IE I have a computer that states I have Windows Vista, I have been a problem disconnecting from a website Pogo.com. if you would please respondAnonymous
January 26, 2009
We're excited to make the IE8 Release Candidate available today for public download today in 25 languagesAnonymous
January 26, 2009
We're excited to make the IE8 Release Candidate available today for public download today in 25 languagesAnonymous
January 26, 2009
We're excited to make the IE8 Release Candidate available today for public download today in 25 languagesAnonymous
January 27, 2009
Доступен Internet Explorer 8 Release Candidate Сегодня мы рады представить вашему вниманию IE8 ReleaseAnonymous
January 29, 2009
This is one of my favorite times in the product cycle. IE8 is platform complete and as we get closerAnonymous
February 04, 2009
Internet Explorer 8 Release Candidate 1 was launched last Tuesday. IE8 is focused on how people reallyAnonymous
April 16, 2009
Internet Explorer 의 프로그램 관리자인 Tony Ross 입니다. IE 팀은 IE8 를 가능한 가장 사용하기 쉬운 웹 브라우저가 될 수 있도록 개발하고 있습니다. 또