dojo/_base/unload

Introduction

Contains addOnUnload() and addOnWindowUnload() methods.

addOnUnload()

addOnUnload() registers a function to be called when the page unloads.

Since working with the DOM or JavaScript during a window.onunload event is not recommended, addOnUnload() is triggered during window.onbeforeunload. However, you need to be careful about what work you do during addOnUnload/window.onbeforeunload since this event can be triggered if the user clicks a link to download a file or a javascript: link. In these cases, the document will not be destroyed and so any destructive operations done during a addOnUnload callback may be premature. If you need to run code during window.onunload then you can register a function using addOnWindowUnload().

Usage

require(['dojo/_base/unload','dojo/_base/xhr'], function(baseUnload, xhr){
  // pass a function pointer
  baseUnload.addOnUnload(function(){
        // do some unload stuff
        console.log("unloading...");
        // NOTE: some browsers block alerts in onunload
        alert("unloading...");
  });

  baseUnload.addOnUnload(function(){
       // make sync xhr before page unloads
       xhr("POST",{
            url: location.href,
            sync: true,
            handleAs: "text",
            content:{
                param1:1
            },
            load:function(result){
                 // will return before next handler fires
                 console.log(result);
            }
       });
  });

  // call a method of an object
  // example: calls a method, unLoad, set on the window
  window.unLoad=function(){
      console.log("an unload function");
      return "This is a message that will appear on unLoad.";
  };
  baseUnload.addOnUnload(window, "unLoad");
});

addOnWindowUnload()

addOnWindowUnload registers a function to be triggered when window.onunload fires.

When a user exits the page to visit another page, the page is unloaded and a window.onunload event handler is fired. During this phase of page loading, it is not recommended that you try to modify the DOM or access JavaScript properties since they may not be available. You should consider using addOnUnload() if you need to modify the DOM or do heavy JavaScript work since it triggers functions during the window.onbeforeunload.

Usage

require(['dojo/_base/unload'], function(baseUnload){
  // pass a function pointer
  baseUnload.addOnWindowUnload(function(){
              // do some unload stuff
              // NOTE: some browsers block alerts in onunload
              alert("unloading...");
      });

  // call a method of an object
  baseUnload.addOnWindowUnload(window, "unLoad");
});