• June 2, 2017

    This is the code I’m using to disable refresh on IE and firefox (This works well for F5, Ctr+F5 and Ctrl+R)

    <script language="javascript" type="text/javascript">
        //this code handles the F5/Ctrl+F5/Ctrl+R
        document.onkeydown = checkKeycode
        function checkKeycode(e) {
            var keycode;
            if (window.event)
                keycode = window.event.keyCode;
            else if (e)
                keycode = e.which;
    
            // Mozilla firefox
            if ($.browser.mozilla) {
                if (keycode == 116 ||(e.ctrlKey && keycode == 82)) {
                    if (e.preventDefault)
                    {
                        e.preventDefault();
                        e.stopPropagation();
                    }
                }
            } 
            // IE
            else if ($.browser.msie) {
                if (keycode == 116 || (window.event.ctrlKey && keycode == 82)) {
                    window.event.returnValue = false;
                    window.event.keyCode = 0;
                    window.status = "Refresh is disabled";
                }
            }
        }
    </script>

    If you don’t want to use useragent to detect what type of browser it is ($.browser uses navigator.userAgent to determine the platform), you can use

    if(‘MozBoxSizing’ in document.documentElement.style) – returns true for firefox

    Update A recent comment claims this doesn’t work in the new Chrome … As shown in jsFiddle, and tested on my personal site, this method still works as of Chrome ver 26.0.1410.64 m

    This is REALLY easy in jQuery by the way:

    jsFiddle

    // slight update to account for browsers not supporting e.which
    function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); };
    // To disable f5
        /* jQuery < 1.7 */
    $(document).bind("keydown", disableF5);
    /* OR jQuery >= 1.7 */
    $(document).on("keydown", disableF5);
    
    // To re-enable f5
        /* jQuery < 1.7 */
    $(document).unbind("keydown", disableF5);
    /* OR jQuery >= 1.7 */
    $(document).off("keydown", disableF5);

    On a side note: This only disables the f5 button on the keyboard. To truly disable refresh you must use a server side script to check for page state changes. Can’t say I really know how to do this as I haven’t done it yet.

    On the software site that I work at, we use my disableF5 function in conjunction with Codeigniter’s session data. For instance, there is a lock button which will lock the screen and prompt a password dialog. The function “disableF5” is quick and easy and keeps that button from doing anything. However, to prevent the mouse-click on refresh button, a couple things take place.

    When lock is clicked, user session data has a variable called “locked” that becomes TRUE
    When the refresh button is clicked, on the master page load method is a check against session data for “locked”, if TRUE, then we simple don’t allow the redirect and the page never changes, regardless of requested destination
    TIP: Try using a server-set cookie, such as PHP’s $_SESSION, or even .Net’s Response.Cookies, to maintain “where” your client is in your site. This is the more Vanilla way to do what I do with CI’s Session class. The big difference being that CI uses a Table in your DB, whereas these vanilla methods store an editable cookie in the client. The downside though, is a user can clear its cookies.

    window.history.forward(1);
    document.attachEvent("onkeydown", my_onkeydown_handler);
    function my_onkeydown_handler() {
        switch (event.keyCode) {
            case 116 : // 'F5'
                event.returnValue = false;
                event.keyCode = 0;
                window.status = "We have disabled F5";
                break;
        }
    }

    for mac cmd+r, cmd+shift+r to need.

    function disableF5(e) { if ((e.which || e.keyCode) == 116 || (e.which || e.keyCode) == 82) e.preventDefault(); };
    $(document).ready(function(){
    $(document).on("keydown", disableF5);
    });
    var ctrlKeyDown = false;
    
    $(document).ready(function(){    
        $(document).on("keydown", keydown);
        $(document).on("keyup", keyup);
    });
    
    function keydown(e) { 
    
        if ((e.which || e.keyCode) == 116 || ((e.which || e.keyCode) == 82 && ctrlKeyDown)) {
            // Pressing F5 or Ctrl+R
            e.preventDefault();
        } else if ((e.which || e.keyCode) == 17) {
            // Pressing  only Ctrl
            ctrlKeyDown = true;
        }
    };
    
    function keyup(e){
        // Key up Ctrl
        if ((e.which || e.keyCode) == 17) 
            ctrlKeyDown = false;
    };
    $(window).bind('beforeunload', function(e) { 
        return "Unloading this page may lose data. What do you want to do..."
        e.preventDefault();
    });

    It works for me in all the browsers

    document.onkeydown = function(){
      switch (event.keyCode){
            case 116 : //F5 button
                event.returnValue = false;
                event.keyCode = 0;
                return false;
            case 82 : //R button
                if (event.ctrlKey){ 
                    event.returnValue = false;
                    event.keyCode = 0;
                    return false;
                }
        }
    }

    Use this for modern browsers:

    function my_onkeydown_handler() {
        switch (event.keyCode) {
            case 116 : // 'F5'
                event.preventDefault();
                event.keyCode = 0;
                window.status = "F5 disabled";
                break;
        }
    }
    document.addEventListener("keydown", my_onkeydown_handler);

    You can directly use hotkey from rich faces if you are using JSF.

    <rich:hotKey key="backspace" onkeydown="if (event.keyCode == 8) return false;" handler="return false;" disableInInput="true" />
    <rich:hotKey key="f5" onkeydown="if (event.keyCode == 116) return false;" handler="return false;" disableInInput="true" />
    <rich:hotKey key="ctrl+R" onkeydown="if (event.keyCode == 123) return false;" handler="return false;" disableInInput="true" />
    <rich:hotKey key="ctrl+f5" onkeydown="if (event.keyCode == 154) return false;" handler="return false;" disableInInput="true" />

    If you want to disable ctrl+f5 , ctrl+R , f5 ,backspace then you can use this simple code. This code is working in Mozila as well as Chrome . Add this code inside your body tag:

    <body onkeydown="return (event.keyCode == 154)">

    other

    http://stackoverflow.com/questions/10222116/unable-to-disable-f5-key-in-ie8
    http://www.aspsnippets.com/Articles/Disable-F5-Key-Button-and-browser-refresh-using-JavaScript-or-jQuery.aspx


เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories