| « l33t gray 2.0 - b2evolution skin | Mac Versus PC (the musical) » |
Firefox got me the other day with this one when I was trying to manually scroll the contents of an iframe because I was trying to achieve a bouncing effect when scrolling between different sections. And for some reason, Firefox would often mysteriously scroll me further then where I was suppose to go.
To best illustrate, have a look at this demo page which shows 2 iframes with slightly different content. In Safari and IE, using arrow up/down on both iframes examples will not scroll the text. However, in FF, if return false is not present in the event, then the scrolling will still occur.
Follow up:
The first iframe without return false has the following Javascript code,
Code:
<script type="text/javascript"> | |
keyCatcher=function(e) | |
{ | |
if(e) | |
{ | |
if (e.stopPropagation) e.stopPropagation(); | |
e.cancelBubble = true; | |
e.returnValue = false; | |
} | |
} | |
| |
document.onkeypress=keyCatcher; | |
| |
</script> |
And the missing piece of the FF puzzle is in second iframe
Code:
<script type="text/javascript"> | |
keyCatcher=function(e) | |
{ | |
if(e) | |
{ | |
if (e.stopPropagation) e.stopPropagation(); | |
e.cancelBubble = true; | |
e.returnValue = false; | |
} | |
/* You need to return false here for Firefox! */ | |
return false; | |
} | |
| |
document.onkeypress=keyCatcher; | |
| |
</script> |
Has been tested and known to affect both FF 2 and FF 3