1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- define(["./kernel", "./lang", "../on"], function(dojo, lang, on){
- // module:
- // dojo/unload
- var win = window;
- var unload = {
- // summary:
- // This module contains the document and window unload detection API.
- // This module is deprecated. Use on(window, "unload", func)
- // and on(window, "beforeunload", func) instead.
- addOnWindowUnload: function(/*Object|Function?*/ obj, /*String|Function?*/ functionName){
- // summary:
- // Registers a function to be triggered when window.onunload fires.
- // Deprecated, use on(window, "unload", lang.hitch(obj, functionName)) instead.
- // description:
- // The first time that addOnWindowUnload is called Dojo
- // will register a page listener to trigger your unload
- // handler with. Note that registering these handlers may
- // destroy "fastback" page caching in browsers that support
- // it. Be careful trying to modify the DOM or access
- // JavaScript properties during this phase of page unloading:
- // they may not always be available. Consider
- // addOnUnload() if you need to modify the DOM or do
- // heavy JavaScript work since it fires at the equivalent of
- // the page's "onbeforeunload" event.
- // example:
- // | var afunc = function() {console.log("global function");};
- // | require(["dojo/_base/unload"], function(unload) {
- // | var foo = {bar: function(){ console.log("bar unloading...");},
- // | data: "mydata"};
- // | unload.addOnWindowUnload(afunc);
- // | unload.addOnWindowUnload(foo, "bar");
- // | unload.addOnWindowUnload(foo, function(){console.log("", this.data);});
- // | });
- if (!dojo.windowUnloaded){
- on(win, "unload", (dojo.windowUnloaded = function(){
- // summary:
- // signal fired by impending window destruction. You may use
- // dojo.addOnWindowUnload() to register a listener for this
- // event. NOTE: if you wish to dojo.connect() to this method
- // to perform page/application cleanup, be aware that this
- // event WILL NOT fire if no handler has been registered with
- // addOnWindowUnload(). This behavior started in Dojo 1.3.
- // Previous versions always triggered windowUnloaded(). See
- // addOnWindowUnload for more info.
- }));
- }
- on(win, "unload", lang.hitch(obj, functionName));
- },
- addOnUnload: function(/*Object?|Function?*/ obj, /*String|Function?*/ functionName){
- // summary:
- // Registers a function to be triggered when the page unloads.
- // Deprecated, use on(window, "beforeunload", lang.hitch(obj, functionName)) instead.
- // description:
- // The first time that addOnUnload is called Dojo will
- // register a page listener to trigger your unload handler
- // with.
- //
- // In a browser environment, the functions will be triggered
- // during the window.onbeforeunload event. Be careful of doing
- // too much work in an unload handler. onbeforeunload can be
- // triggered if a link to download a file is clicked, or if
- // the link is a javascript: link. In these cases, the
- // onbeforeunload event fires, but the document is not
- // actually destroyed. So be careful about doing destructive
- // operations in a dojo.addOnUnload callback.
- //
- // Further note that calling dojo.addOnUnload will prevent
- // browsers from using a "fast back" cache to make page
- // loading via back button instantaneous.
- // example:
- // | var afunc = function() {console.log("global function");};
- // | require(["dojo/_base/unload"], function(unload) {
- // | var foo = {bar: function(){ console.log("bar unloading...");},
- // | data: "mydata"};
- // | unload.addOnUnload(afunc);
- // | unload.addOnUnload(foo, "bar");
- // | unload.addOnUnload(foo, function(){console.log("", this.data);});
- // | });
- on(win, "beforeunload", lang.hitch(obj, functionName));
- }
- };
- dojo.addOnWindowUnload = unload.addOnWindowUnload;
- dojo.addOnUnload = unload.addOnUnload;
- return unload;
- });
|