How can I disable "Are you sure you want to leave this page" popups in Chrome?

Solution 1:

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.

Solution 2:

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. :)

Solution 3:

$(window).off('beforeunload.windowReload');

This is worked for me.

Solution 4:

Here's an alternative, manual way to remove beforeunload event listeners:

  1. Right click your web page in Chrome and choose Inspect from the menu, or type Ctrl+Shift+I.
  2. 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.
  3. On the right side panel pick the "Event Listeners" tab.
  4. Locate the beforeunload event listener in the list and expand it
  5. Use the "Remove" button for all the event listeners under it.

visual instructions


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");