A while back I was trying to figure out how to make F1 bring up a custom help window in our web application ActiveFocus. It is easy enough to trap a keypress and open a window showing the help, but to my frustration, after popping up the new window, the built in Internet Explorer help window popped up too!
I tried various variations of cancelling the kepress event, but nothing seems to work. This is for instance how I cancel Ctrl+F (which normally pops up IEs built in Find dialog, but I wanted it to show a custom search dialog instead) :
<script type="text/javascript">
function onKeyDownH(e)
{
e = window.event;
var ctrl = (e.ctrlKey) ? true : false;
if (ctrl == true )
{
if ( e.keyCode == 70)
{
e.returnValue = false;
e.keyCode = 0;
ShowSearchPage();
}
}
}
function onloadH(e)
{
document.onkeydown = onKeyDownH;
return true;
}
window.onload = onloadH;
</script>
This cancelling approach by the way does work for other keypresses, just not F1, which has some kind of special internal handing. After much head scratching I finally stumbled across this simple solution:
<body onhelp="ShowHelp(); return false;">
Here, ShowHelp does the actual showing of the help window.
Simple, huh? If anyone knows how to make this cross browser compatible I am all ears!