You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.8 KiB
95 lines
3.8 KiB
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; |
|
|
|
});
|
|
|