1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
use webcore::value::Reference;
use webapi::event_target::{IEventTarget, EventTarget};
use webapi::window_or_worker::IWindowOrWorker;
use webapi::storage::Storage;
use webapi::location::Location;
/// The `Window` object represents a window containing a DOM document.
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window)
pub struct Window( Reference );
impl IEventTarget for Window {}
impl IWindowOrWorker for Window {}
reference_boilerplate! {
Window,
instanceof Window
convertible to EventTarget
}
/// A global instance of [Window](struct.Window.html).
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window)
pub fn window() -> Window {
unsafe { js!( return window; ).into_reference_unchecked() }.unwrap()
}
impl Window {
/// The Window.alert() method displays an alert dialog
/// with the optional specified content and an OK button.
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert)
pub fn alert( &self, message: &str ) {
js!( @(no_return)
@{self}.alert( @{message} );
);
}
/// The `local_storage` property allows you to access a local [Storage](struct.Storage.html)
/// object.
///
/// It is similar to the [Window::session_storage](struct.Window.html#method.session_storage).
/// The only difference is that, while data stored in `local_storage` has
/// no expiration time, data stored in `session_storage` gets cleared when
/// the browsing session ends - that is, when the browser is closed.
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
pub fn local_storage( &self ) -> Storage {
unsafe {
js!(
return @{self.as_ref()}.localStorage;
).into_reference_unchecked().unwrap()
}
}
/// The `session_storage` property allows you to access a session [Storage](struct.Storage.html)
/// object for the current origin.
///
/// It is similar to the [Window::local_storage](struct.Window.html#method.local_storage),
/// The only difference is that, while data stored in `local_storage` has
/// no expiration time, data stored in `session_storage` gets cleared when
/// the browsing session ends.
///
/// A page session lasts for as long as the browser is open and survives over
/// page reloads and restores. Opening a page in a new tab or window will cause
/// a new session to be initiated, which differs from how session cookies work.
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
pub fn session_storage( &self ) -> Storage {
unsafe {
js!(
return @{self.as_ref()}.sessionStorage;
).into_reference_unchecked().unwrap()
}
}
/// Returns a [Location](struct.Location.html) object which contains
/// information about the URL of the document and provides methods
/// for changing that URL and loading another URL.
///
/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Window/location)
pub fn location( &self ) -> Option< Location > {
unsafe {
js!(
return @{self}.location;
).into_reference_unchecked()
}
}
}