feat: window.onunload (#3023)

This commit is contained in:
Bartek Iwańczuk 2019-10-02 17:32:51 +02:00 committed by Ryan Dahl
parent d32f39f2ec
commit c920c5f62a
9 changed files with 126 additions and 20 deletions

View file

@ -84,6 +84,7 @@ window.setTimeout = timers.setTimeout;
window.setInterval = timers.setInterval;
window.location = (undefined as unknown) as domTypes.Location;
window.onload = undefined as undefined | Function;
window.onunload = undefined as undefined | Function;
// The following Crypto interface implementation is not up to par with the
// standard https://www.w3.org/TR/WebCryptoAPI/#crypto-interface as it does not
// yet incorporate the SubtleCrypto interface as its "subtle" property.
@ -171,6 +172,16 @@ window.addEventListener(
}
}
);
// Registers the handler for window.onunload function.
window.addEventListener(
"unload",
(e: domTypes.Event): void => {
const onunload = window.onunload;
if (typeof onunload === "function") {
onunload(e);
}
}
);
// below are interfaces that are available in TypeScript but
// have different signatures

View file

@ -1248,6 +1248,7 @@ declare interface Window {
setInterval: typeof timers.setInterval;
location: domTypes.Location;
onload: Function | undefined;
onunload: Function | undefined;
crypto: Crypto;
Blob: typeof blob.DenoBlob;
File: domTypes.DomFileConstructor;
@ -1294,6 +1295,7 @@ declare const setTimeout: typeof timers.setTimeout;
declare const setInterval: typeof timers.setInterval;
declare const location: domTypes.Location;
declare const onload: Function | undefined;
declare const onunload: Function | undefined;
declare const crypto: Crypto;
declare const Blob: typeof blob.DenoBlob;
declare const File: domTypes.DomFileConstructor;