For those who may have a bit of a hearing impairment, let me
make it very clear. In my subject, I'm saying DOM, D O M, not
balm, b A L M. Although some may call DOM the balm. LOL!
And here therefore lies the reason for my post this morning. - I
fully realize that this is somewhat a subjective topic, and that
everyone will have his or her own opinions on the matter. It is
therefore my hope, that you, the reader, have an open and civil
mind, and observe this question from all angles before making your
response statement on list. I do not want to see this grow to a
heated war debate. Anyone who would like to publish this on their
website, or wherever is welcome to do so as long as you give
credit back to me.
First off, what is DOM?
DOM, Document Object Model, without getting too technical, is
one way in which assistive technology such as screen readers
obtain information from one's computer screen. When we load a
website in our browser of choice, for example, some screen readers
use the DOM functionality to draw a representation of the content
on the screen.
So, what does this mean to us non-techies?
Put simply, though I am not particularly sure of the exact
workflow which occurs behind the scene, what I can tell you is
this. Often times, more than not, this approach requires the
assistive technology sitting in between the user and the web
browser to redraw, as some would say, the entire HTML content in
completion. The reason that the word "redraw" is used is because
essentially, this is exactly what is happening.
Once a website is loaded, a certain amount of memory is
allocated aside where the website in question may be rendered.
There are a few advantages to this, however there are also some
huge setbacks.
Beauty and the Beast
One of the advantages which probably appears to be fairly
obvious from an outsider's perspective is that this will allow
assistive technology to use certain methods to gather the web
content and then present the material in an easy, robust, and
sensably accessible manor. As the writer of this post, let me
assure all of you... I definitely see the side of this
argument.
Here's a practical example of DOM.
Let's assume, for just a moment, that you have loaded a
website in the browser of your preference, be it Firefox, Internet
Explorer, Chrome, etc.
On this particular page, there are links which visually
appear as horizontal tabs extending across the top of the page.
These tabs include the following:
- Home
- About Us
- Blog
- Shop
- Support
- Contact Us
To fully understand how this works, I encourage you to read
the following part of this e-mail by using your down arrow key,
and reading line by line individually. Here is what you will see.
Remember before I go any further with this, all of these links
visually appear as one strip of horizontal tabs running across the
top of the web page.
Link Home
Link About Us
Link Blog
Link Shop
Link Support
Link Contact Us
Here's another example.
You have a short form on a website. This form asks for your
first name, your last name, and your e-mail address. Here's how
DOM most likely would reinterpret this. Again, please read this
line by line.
Please fill out the following form so we may keep in
touch.
First name
Edit
Last name
Edit
E-mail
Edit
Submit button
Clear form button.
First example without DOM
Read this line by line, and make sure this window with my
message is maximized before doing so.
Link home, Link About Us, Link Blog, Link Shopt, Link
Support, Link Contact Us.
Second example without DOM
Please fill out the following form so we may keep in
touch.
First name Edit
Last name Edit
E-mail Edit, Submit: button, Clear form: Button.
The difference
As you can see in the above four illustrations, the first two
examples were rendered in such that each link/form control was on
its own line. This is why I asked you to read line by line, as
doing a say-all, you never would have most likely caught this. So,
in other words, let's make this really easy in plain
english.
Refer back to my very first example where we had the tabs
which are being represented as hyperlinks. As you recall, I said
that they all went horizontally from left to right across the top
of the page.
The problem is, DOM renders each element, for lack of better
word, as its own separate item. For this reason, each element is
on its own dedicated line of text. This is why each link is
seeming to appear on its own line by itself. The truth is, these
links in all actuality are not on multiple lines. They are
actually expanding across the entire marginal width of the screen.
Are you starting to see where this could be a potential
problem?
The second example is slightly less annoying, however the
point still stands in existance.
We have a form. If you've ever seen how a form generally
looks on a print sheet of paper, you'll note that most form field
labels such as first name, last name, etc. go down the left side
of the sheet of paper. Then, horizontally aligned beside these
field labels is the data value.
For example, I might have a form printed out which I sign for
a Hippa release at my doctor's office. The first field may say,
"Name". Out to the immediate right of this will be either a line,
or a box. It just depends on how the form is designed, but the
over all point is, there will be a second column to the immediate
right of where it said, "First name". This is where I would write,
"Christopher (Middle name) Gilland. Obviously, some of you may
know my middle name, but for privacy sake, I'm not including it
here.
Given how the above physical print paper illustration is
formatted, as most forms online or not would be, does it really
make sense to have the form field, then the data directly below?
No. It doesn't.
Look at my above second example without DOM. Notice that the
edit box for all three fields is now actually rendering exactly as
it would be visually on the screen. The boxes are to the immediate
right of the fields, on the same line. Doesn't that just naturally
feel better in your mind, and make more sense? It definitely
should to most people.
Finally, we have both the submit, and the clear
vbuttons.
Does it make sense to you that they'd both be virtically
stacked one on top of the other? It certainly doesn't to me! In
fact, to me, I'd even go so far as to say it seems absolutely
gross! Maybe I am more a visual learner, but even if I
wasn't, this doesn't logically compute. However, this is
exactly how DOM is rendering it... One button, and one element per
line.
Helping the sighted to guide you
So why is this such a vbig deal? Call me a perfectionist, but
let's assume for just a moment that you're on the phone with a
customer service representative. They tell you to click the
contact us tab located in the upper right corner of the page. This
would be a very poor website design, and to any web debvs on here,
please for the love of god, take this in consideration! I can't
tell you though how many times I've seen this. A web designer will
put a contact link at the top of the page which has a form to
e-mail them. Further down the page, they have another contact link
within the actual main body's content. The difference however is,
in this second link, though named identically the same thing,
"Contact Us", this second link doesn't direct the visiter to a
contact form, but instead gives a phone number, fax number, and
possibly a postal address. Totally unacceptable in my view! All
this should be consolidated on the one contact page at the top of
the screen. This however still proves my point, and like I said,
I've seen this more times than I could count, and would gbe rich
if I had a dollar for every time I have. OK, so, you now arrow
through the page, or do an NVDA find to locate the Contact link.
Heck, you might even do NVDA+F7 to bring up your links list. And
believe me, though I'm directing this more as an NVDA thing, NVDA
isn't the only screen reader which can use the DOM method. JAWS,
for example, is incredibly! and I do mean, incredibly! notorious
for this. Now, think about this a minute with this really
convoluted scanareo regarding the contact link. - How are you
going to know which contact link to press enter on to open the
contact form, if you're in DOM navigation? Exactly! - You won't.
It would be hit and miss.
Now, let's take this same situation without DOM mode.
In this environment, for lack of better word, you would
observe both via audible speech, as well as via braille output if
you have a display, that the first "Contact us" link is on the far
right edge of the screen. You'd know this as you'd see the other
links like Home, About us, Blog, etc. on the same line but to the
immediate left before it. Does this make sense what I'm
saying?
The bottom line
Regardless if you choose to use DOM or not is not something
anyone should decide for an individual. If you are coming from a
screen reader like JAWS as I have, you definitely may find turning
off DOM navigation to be extremely awquard at best. I'd even go as
far as to say that it may drive you absolutely crazy at first, and
make your web browsing experience seem dreadful. I would however
seriously encourage people to at least give it a try for a few
days without DOM navigation. Inevitably, if you're not used to it,
it's going to take some getting used to, however if you're
anything like me, I feel that eventually, you will really start to
see the benefits of not using DOM. DOM is great in my opinion,
don't get me wrong, but if you want, or need in a mission critical
environment to have an exact representation of the content, then
fact is fact, you're not going to get it with DOM mode, end of the
story, it's just not gonna happen, period. You might as well just
accept it. The other thing to also realize is, you are taking up
unnecessary memory/processor power to render things differently as
an offline model. Granted, OK, it may not be much, but that's not
the point. It's still taking up what to some would be considered
as unnecessary resources.
What are your thoughts?
Do you use DOM? If not, I'd be interested in your reasons why
not.
Chris.