diff --git a/crates/web-sys/src/lib.rs b/crates/web-sys/src/lib.rs index bccf5838..36944101 100755 --- a/crates/web-sys/src/lib.rs +++ b/crates/web-sys/src/lib.rs @@ -17,4 +17,15 @@ extern crate wasm_bindgen; extern crate js_sys; use js_sys::Object; +#[cfg(feature = "Window")] +pub fn window() -> Option { + use wasm_bindgen::{JsValue, JsCast}; + + js_sys::Function::new_no_args("return this") + .call0(&JsValue::undefined()) + .ok()? + .dyn_into::() + .ok() +} + include!(concat!(env!("OUT_DIR"), "/bindings.rs")); diff --git a/examples/canvas/src/lib.rs b/examples/canvas/src/lib.rs index 1b200c4b..5396975c 100755 --- a/examples/canvas/src/lib.rs +++ b/examples/canvas/src/lib.rs @@ -8,7 +8,7 @@ use wasm_bindgen::JsCast; #[wasm_bindgen] pub fn draw() { - let document = web_sys::Window::document().unwrap(); + let document = web_sys::window().unwrap().document().unwrap(); let canvas = document.get_element_by_id("canvas").unwrap(); let canvas: web_sys::HtmlCanvasElement = canvas .dyn_into::() diff --git a/examples/fetch/build.sh b/examples/fetch/build.sh index 585f428c..78b9a458 100755 --- a/examples/fetch/build.sh +++ b/examples/fetch/build.sh @@ -8,3 +8,6 @@ cargo +nightly build --target wasm32-unknown-unknown cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml \ --bin wasm-bindgen -- \ ../../target/wasm32-unknown-unknown/debug/fetch.wasm --out-dir . + +npm install +npm run serve diff --git a/examples/fetch/src/lib.rs b/examples/fetch/src/lib.rs index 523d4cf8..02d851b1 100644 --- a/examples/fetch/src/lib.rs +++ b/examples/fetch/src/lib.rs @@ -12,7 +12,7 @@ use wasm_bindgen::prelude::*; use wasm_bindgen::JsCast; use wasm_bindgen_futures::future_to_promise; use wasm_bindgen_futures::JsFuture; -use web_sys::{Request, RequestInit, RequestMode, Response, Window}; +use web_sys::{Request, RequestInit, RequestMode, Response}; /// A struct to hold some data from the github Branch API. /// @@ -57,7 +57,8 @@ pub fn run() -> Promise { .set("Accept", "application/vnd.github.v3+json") .unwrap(); - let request_promise = Window::fetch_with_request(&request); + let window = web_sys::window().unwrap(); + let request_promise = window.fetch_with_request(&request); let future = JsFuture::from(request_promise) .and_then(|resp_value| { diff --git a/examples/paint/src/lib.rs b/examples/paint/src/lib.rs index 905b956f..f7abc520 100755 --- a/examples/paint/src/lib.rs +++ b/examples/paint/src/lib.rs @@ -9,7 +9,7 @@ use wasm_bindgen::JsCast; #[wasm_bindgen] pub fn main() { - let document = web_sys::Window::document().unwrap(); + let document = web_sys::window().unwrap().document().unwrap(); let canvas = document .create_element("canvas") .unwrap()