我在网上找了好久,普遍的意见是document.onkeydown = function (e) {
            var ev = window.event || e;
            var code = ev.keyCode || ev.which;
            if (code == 116) {
                ev.keyCode ? ev.keyCode = 0 : ev.which = 0;
                cancelBubble = true;
                return false;
            }
        }
我在IE8下测试可以实现,但在火狐18 用Firbug调试,发现上面的代码不兼容火狐。在chrome中测试发现也不兼容

解决方案 »

  1.   

    if ( e && e.preventDefault ) 
    e.preventDefault(); 
    else
    window.event.returnValue = false;在return false;前面加上这两句试下。
      

  2.   

    本觉得不像可以实现的样子,因为这个事件该是浏览器处理的,不是js代码
    但刚刚试了一下,firefox,chrome,ie居然都支持,呵呵,真想不到
    你的火狐谷歌不行可能是浏览器的安全级别造成的吧,这个毕竟是浏览器实现的功能,让不让你阻止浏览器说了算
      

  3.   

    cancelBubble = true;这个属性只有ie才有
      

  4.   

    禁止F5,刚试了下,在 IE7,IE8 起作用的只有那一句..window.event.keyCode=0,
    可能是因为使用YUI库的关系,其它非IE,都有 e.preventDefault 这个方法的..Y.one('document').on('key',function(e){
      e.halt(true); 
      window.event.keyCode = 0; // IE7,IE8 通过测试
      Y.log('Press F5');
    },'down:116');
      

  5.   

    刚试了一下,ie7/8/ff/safair/opera都可以
    document.onkeydown = function (e) {
    var ev = window.event || e;
    var code = ev.keyCode || ev.which;
    if (code == 116) {
    if(ev.preventDefault) {
    ev.preventDefault();
    } else {
    ev.keyCode = 0;
    ev.returnValue = false;
    }
    }
    }
      

  6.   


    不好意思,搞错了,safari不行,是chrome可以
      

  7.   


    我刚才看了大家的回答,然后又用了5楼的代码实验了一下,发现其实我之前找到代码也是起作用的。但为什么我之前说不兼容chome和火狐呢?我发现是因为我按F5测试时 ,在调试模式下,按的太快,太频繁。导致chome、firebug中的断点都刚进去就被重新load的操作刷掉了,所以我就误以为那些代码不能兼容CHROME、火狐。
    我把(chome的javascript控制台、firebug一关,测试才发现那些代码是起一定作用的(在按F5下起作用,鼠标直接点击刷新键不起作用)。
      

  8.   

    确实是这样,因为js只能控制在页面范围内的按键行为,超出页面范围就无能为力了。。直接点击浏览器上的刷新键,那个除非能截获系统消息。据说IE可能做到,用active x ,但那样没用意义。
      

  9.   

    if ( e && e.preventDefault ) 
    e.preventDefault(); 
    else
    window.event.returnValue = false;
    找了好久,加上这两句话可以屏蔽Firefox的功能键,多谢