|
A More Accessible Pop-Up Window
by: Karl Groves
More and more
commercial websites are featuring pop-ups
these days. In many instances, I'm noticing
more pop-ups being used for advertising,
probably due to the harsh reality that is
"banner blindness". In other cases, pop-ups
are used to display supplemental content to
the parent page. Unfortunately, many
designers know little about how to make a
proper pop-up window that will be
accessible.
Among the many
concerns of accessible design is found in
"Guideline 6" of the W3C's Web Content
Accessibility Guidelines:
http://www.w3.org/TR/WCAG10/#gl-new-technologies
- "Ensure that pages are accessible even
when newer technologies are not supported or
are turned off." Simply put, you should
ensure that your content remains accessible
to those who modify their accessibility
settings to disable scripting or whose
choice of adaptive technology does not
recognize scripting. See also the relevant
Section 508 criteria:
http://www.access-board.gov/sec508/guide/1194.22.htm#(l)
Popups are
among the items that most often violate this
accessibility guideline
A common
pop-up window link will probably begin like
this: <a href="#" onClick="window.open......
or: <a href="javascript:; onclick="window.open(.......
In both instances, the link becomes
completely unusable to those with scripts
turned off or with browsers that do not
recognize JavaScript.
From here on
out, lets assume our target audience fits
one of the two situations just mentioned -
either they have JavaScript disabled or
their browser cannot recognize JavaScript.
In the first
case, using "#" as the hypertext reference
will result, at best, in their being taken
to the top of the page. The "#" sign is
interpreted as what's known as a "Fragment
Identifier Separator" ( see geekspeak at -
http://www.w3.org/Addressing/URL/4_2_Fragments.html
). What this means to us is that the "#" is
supposed to point somewhere, such as a named
object on the page. It is not a default "Do
Nothing" character. The hash symbol prepends
the name of the target. So that <a href="#contact">Contact
me</a> will take you to a place on the page
that is named "contact" - <a
name="contact"></a>
Using just
plain "#" as the hypertext reference is bad
because "A void fragment-id with or without
the hash sign means that the URL refers to
the whole object." In most browsers, it will
be interpreted as pointing back to the
beginning of the page. At best, it will do
nothing when clicked.
In the second
case, using "javascript:;" as the hypertext
reference simply does nothing. Remember,
we're dealing with those who for one reason
or the other can't use anything dependent
upon JavaScript. So again, this link does
nothing for someone whose browser does not
recognize javascript.
It can be done
better and work well for all
Fortunately,
we can create an accessible alternative that
functions perfectly for those with
JavaScript enabled, yet degrades well for
those who don't. We do this by using a real
link to the actual destination in our
hypertext reference:
<a href="file.html"
onclick="window.open('file.html', 'window_name',
'toolbar=yes, location=yes, status=yes,
menubar=yes, scrollbars=yes, resizable=yes,
width=xxx, height=xxx'); return false"> Open
Window </a>
The above is
the "accessible" method to open a popup
(opening new windows is bad anyway, so I
guess this is the lesser of two evils).
Using the real file as the hypertext
reference, but set the link to "return
false" will operate properly whether the
person has JavaScript enabled or not. Those
without JavaScript enabled still get to the
content, and those who have JavaScript get
the popup as intended.
Now, here's
the treat: Many people offer a means to
close the pop-up that has just opened.
Again, they do this with either <a href="#"...
or <a href="javascript:;... Like so: <a href="#"
onClick="window.close()">Close</a> Well,
like I said before, all this does is take
them to the top of the page. Assuming the
popup is linked on only one page we can take
them back by placing the referring file in
the hypertext reference: <a href="referrer.html"
onClick="window.close()">Close</a>
The use of the
word "Close" might be confusing, but there
are two schools of thought here.
1. By not
opening the new window on those w/o
JavaScript, the back button still works and
will use this
2. Using a
title will help them predict what will
happen. Like so: <a href="referrer.html"
title="clicking this link will take you back
to the referrer if you don't have
JavaScript" onClick="window.close()">Close</a>
Alternatively,
you might also use the alt text attribute of
a transparent spacer image: <a href="referrer.html"><img
src="path/spacer.gif" width="1" height="1"
border="0" alt="[Go Back]"></a> (This
assumes they're also surfing with images off
or on a non-graphical browser)
Ultimately,
this comes down to what you hear me say so
often: You cannot reliably predict the user
or their settings. So don't try. Make it
right and it will be usable to all.
Disclaimer:
Opening new
windows is bad enough as it is. The above
article only aims at showing you how to make
them better. The best answer is to not use
them at all. Please see the following links
for details -
-
Jakob
Nielsen's Alertbox: The Top Ten New
Mistakes of Web Design
-
Jakob
Nielsen's Alertbox: Top Ten Web-Design
Mistakes of 2002
-
Dive Into
Accessibility: Day 16, Not Opening New
Windows
-
Dan's Web
Tips: Opening New Browser Windows
About The Author
Karl Groves is a freelance
web designer who has done production
work for such sites as National Cancer
Institute, Network For Good and
Aerospace Medical Association.
|
<< Back to "Web Design
Development" Index
|