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

@ -371,12 +371,17 @@ fn run_script(flags: DenoFlags, argv: Vec<String>) {
js_check(worker.execute("denoMain()"));
debug!("main_module {}", main_module);
let mut worker_ = worker.clone();
worker
.execute_mod_async(&main_module, false)
.and_then(move |()| {
js_check(worker.execute("window.dispatchEvent(new Event('load'))"));
worker.then(|result| {
worker.then(move |result| {
js_check(result);
js_check(
worker_.execute("window.dispatchEvent(new Event('unload'))"),
);
Ok(())
})
})

View file

@ -5,3 +5,7 @@ got load event in onload function
got load event in event handler (nest_imported)
got load event in event handler (imported)
got load event in event handler (main)
got unload event in onunload function
got unload event in event handler (nest_imported)
got unload event in event handler (imported)
got unload event in event handler (main)

View file

@ -1,8 +1,11 @@
import { assert } from "../../../js/deps/https/deno.land/std/testing/asserts.ts";
import "./nest_imported.ts";
window.addEventListener(
"load",
(e: Event): void => {
console.log(`got ${e.type} event in event handler (imported)`);
}
);
const handler = (e: Event): void => {
assert(!e.cancelable);
console.log(`got ${e.type} event in event handler (imported)`);
};
window.addEventListener("load", handler);
window.addEventListener("unload", handler);
console.log("log from imported script");

View file

@ -1,14 +1,23 @@
import { assert } from "../../../js/deps/https/deno.land/std/testing/asserts.ts";
import "./imported.ts";
window.addEventListener(
"load",
(e: Event): void => {
console.log(`got ${e.type} event in event handler (main)`);
}
);
const eventHandler = (e: Event): void => {
assert(!e.cancelable);
console.log(`got ${e.type} event in event handler (main)`);
};
window.addEventListener("load", eventHandler);
window.addEventListener("unload", eventHandler);
window.onload = (e: Event): void => {
assert(!e.cancelable);
console.log(`got ${e.type} event in onload function`);
};
window.onunload = (e: Event): void => {
assert(!e.cancelable);
console.log(`got ${e.type} event in onunload function`);
};
console.log("log from main");

View file

@ -1,7 +1,10 @@
window.addEventListener(
"load",
(e: Event): void => {
console.log(`got ${e.type} event in event handler (nest_imported)`);
}
);
import { assert } from "../../../js/deps/https/deno.land/std/testing/asserts.ts";
const handler = (e: Event): void => {
assert(!e.cancelable);
console.log(`got ${e.type} event in event handler (nest_imported)`);
};
window.addEventListener("load", handler);
window.addEventListener("unload", handler);
console.log("log from nest_imported script");

View file

@ -1 +0,0 @@
console.log("from imported script");