I want to disable browser refreshing using JavaScript.
Currently, I am using window.onbeforeunload
and I don't want it to be called when user refreshes the browser.
What is the best way to do it?
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.
Click the Start button, type “internet options” and select Internet Options in the search results. In the Internet Properties window, click “Custom tab -> Custom level,” then in the Security Settings window, scroll down until you find “Allow META REFRESH.” Disable this option and click OK.
function disableBackButton() { window. history. forward(); } setTimeout("disableBackButton()", 0);
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:
// 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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With