Is there a way to disable the Are you sure you want to leave this page? message on a website? I'm using Chrome.
6 Answers
Those messages are implemented by website developers by listening to the onunload
or onbeforeunload
events.
There is a userscript available from about.com that blocks those events.
In order to install this userscript (or other userscripts, for that sake) you need to first install a Chrome extension called TamperMonkey.
Be careful when installing userscripts, they are capable of doing things you might not want. Only install userscripts from trusted sources.
Using jQuery
$(window).off('beforeunload'); // tested in IE 11 and Chrome 62
From the jQuery docs
Calling .off() with no arguments removes all handlers attached to the elements. Specific event handlers can be removed on elements by providing combinations of event names, namespaces, selectors, or handler function names.
So in summation the $(window)
gives us a reference to the window object that is wrapped in a jQuery object. This wrapper gives us access to jQuery APIs that are available on the object (such as .off
). Calling .off()
and providing the string beforeunload
will remove any event listeners that were previously listening for the beforeunload
event.
Note: I did play with the vanilla JS approaches I found after some quick research on Google. However, I was not able to get these approaches to work in the allotted time I had to resolve this issue. If someone has a non jQuery method that is still cross browser compatible please comment or post an additional answer. :)
-
I was unsuccessful using the accepted answer, and jQuery was already available on the page. Nov 21, 2017 at 15:31
-
2This would be a better answer if you would explain how to use it, and, ideally, something about how it works. Nov 21, 2017 at 19:19
-
This is SuperUser, not Stack Overflow. Users aren't expected to know how to implement this line of code.– FlimmMar 14, 2022 at 14:35
$(window).off('beforeunload.windowReload');
This is worked for me.
Here's an alternative, manual way to remove beforeunload
event listeners:
- Right click your web page in Chrome and choose Inspect from the menu, or type
Ctrl+Shift+I
. - Make sure you are in the Elements tab and that the right side panel is visible, if it isn't make sure the Inspect window is wide enough.
- On the right side panel pick the "Event Listeners" tab.
- Locate the
beforeunload
event listener in the list and expand it - Use the "Remove" button for all the event listeners under it.
And a vanilla-JS way that doesn't require jQuery. Thanks to Mike Sraj:
function removeListenersFromElement(element, listenerType){
const listeners = getEventListeners(element)[listenerType];
let l = listeners.length;
for(let i = l-1; i >=0; i--) {
removeEventListener(listenerType, listeners[i].listener);
}
}
removeListenersFromElement(window, "beforeunload");
so to get the command from @wickdninja working, first install Chrome Developer Tools. Then you can open that and you will see a tab for 'Console'. Click the Console tab. Then to enable jQuery type these commands:
var jqry = document.createElement('script');
jqry.src = "https://code.jquery.com/jquery-3.3.1.min.js";
document.getElementsByTagName('head')[0].appendChild(jqry);
jQuery.noConflict();
Then type:
$(window).off('beforeunload');
after that i am able to open/close my gmail without getting the 'Leave?' prompt. https://developers.google.com/web/tools/chrome-devtools/console/javascript
hope this helps.
-
That solutions don't work. Also I don't understand how to "install Chrome Developer Tools". Chrome Developer Tool is a part of Chrome Browser already. There is no way to install/uninstall it.– ArgusJan 30, 2020 at 7:13
You can disable Javascript on a site-by-site basis. Go to Settings --> Show advanced settings --> Privacy --> Content settings --> Javascript --> Manage exceptions.
-
4
-
In FIrefox at least, disallowing facebook to run javascript doesn't even accomplish what the OP intends as the page simply keeps reloading the script without executing it.– brokkrMar 30, 2015 at 15:22