五年前的系统,浏览器偏偏又是规定好的netscape 6.增加新功能--->快捷键F5 【当然不是refresh】。
原来的快捷键系统是建立在onkeyup事件基础上的。
第一个方案:
原来的快捷键系统是建立在onkeyup事件基础上的。
第一个方案:
在捕捉到F5的keyup事件之后调用event.stopPropagation(),防止事件bubble 。第二个方案:
结果:无效,F5事件最然被catch住了,但是页面依旧被刷新了。
分析:1]是否event.stopPropagation()在netscape 6中无效呢?
测试表明 的确事件没有向上一层dom传播.
猜测:是否是截取的事件有问题?
将方案一稍做改变,捕捉keydown事件。第三个方案:
结果:和方案一的结果相同。
郁闷。
将方案一稍做改变,捕捉keypress事件。解决案
结果:大喜,页面不再刷新
大悲,F【X】打头的案件的keycode 都是0,也就是无法区分F1 ,F2 ...了。
愤怒!
结合上面的测试结果:onkeyup事件照常调用,在onkeypress事件 调用 event.stopPropagation(),屏蔽掉F5声明:此乃netscape 6的独门秘籍,在Firefox上和IE上都无法正确运行。
测试代码如下:
js 代码结果很完美。
- <script type="text/javascript">
- alert("init") // if refresh ,it will display
- window.οnkeydοwn= keyup;
- window.οnkeypress= doanother;
- function keyup(event)
- {
- alert("keyup event detected!"+event.which);
- event.stopPropagation()
- return ;
- }
- function doanother(event){
- alert("press"+event.which)
- event.stopPropagation()
- }
- </script>