Christian Heilmann

Author Archive

Captchas cracked

Tuesday, February 1st, 2005

Generally the safest way to ensure real humans enter data are so called captchas (Completely Automated Public Turing-Test to tell Computers and Humans Apart – distorted pictures with words in them you are asked to read and type in). Now, these are not only an accessibility issue (how would a blind user type them in?), but clever spammers found a way around them, using free porn and gullible people.

Dynamic Galleries with DOM and CSS – new article on devarticles.

Tuesday, February 1st, 2005

A new article describes how to create dynamic galleries with DOM and CSS. Read the devarticles.com version, or if you dislike ads, the local copy.

My very own guidedog!

Monday, January 31st, 2005

With all my accessibility studies and teachings at work, I thought it’ll be a good idea to do something for charity, and what better than to sponsor a puppy to become a guide dog?

I filled out the forms and here he is:

Varley, my guide dog

Varley, my very own soon to be guide dog. I hope when he is out of school, he’ll be very helpful to somebody who needs him.

On with the OS war

Monday, January 31st, 2005

The mini mac is scarcely out to the public, and already people try to turn it into a PC.

Pure mouse independent CSS popups?

Monday, January 31st, 2005

A lot of people cherish the pure CSS popups technique published by Eric Meyer in the long long ago.

The only problem with these is that they are not accessible. While screen readers and browsers without CSS happily display the texts, users without a mouse have no chance to get to the content of the spans embedded in the links.

What we can do though is use Javascript to check if a mouse is available, and make our CSS dependent on a class set to the body if that is the case:

CSS:

body.mouseenabled a span{
position:absolute;
left:-999em;
}

body.mouseenabled a:hover{
color:#fff;
}

body.mouseenabled a:hover span{
position:relative;
left:0;
}


Javascript

window.onload=function()
{

if(!document.getElementById || !document.createElement){return;}
document.body.onmousemove=function()
{

if(!/bmouseenabledb/.test(document.body.className))
{

this.className+=this.className?' mouseenabled':'mousenabled';
}

}
}

See it in action here.

Benefits:

  • Keyboard accessible

Drawbacks:

  • The popups are visible until the user moves the mouse.
  • Visitors need Javascript enabled to see the effect.