Rust wasm:如何从 web-sys 访问 HTMLDocument?
Rust wasm : How to access HTMLDocument from web-sys?
使用 web-sys crate
我想从 HTMLDocument 访问 cookie method。
我想做这样的事情。确实这行不通。
let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let cookie = document.cookie().unwrap();
//no method named `cookie` found for type `web_sys::features::gen_Document::Document` in the current scope
我需要访问 HTMLDocument 结构而不是 Document 结构。
Cargo.toml 启用了功能。
~snip~
[dependencies.web-sys]
version = "0.3.4"
features = [
"WebSocket",
'Window',
'Document',
'HtmlDocument',
]
根据 API 它应该像文档一样可以在 Window 下访问。
它似乎不适用于类似的东西:
let html_document = window.html_document().unwrap();
从 documentation HTMLDocument 应该扩展 Document。
我知道 Rust 中没有继承,但是
我不能这样从文档转换它:
let html_document = web_sys::HtmlDocument::from(document);
与into
功能相同。
是否可以通过这种方式访问 HTMLDocument?
还有其他方法可以使用 web-sys 访问 cookie 吗?
是否有正在进行的工作目前无法正常工作?
您需要的是 动态转换,这是通过 wasm_bindgen::JsCast::dyn_into()
:
完成的
use wasm_bindgen::JsCast;
let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let html_document = document.dyn_into::<web_sys::HtmlDocument>().unwrap();
let cookie = html_document.cookie().unwrap();
还有不消耗原始对象的变体wasm_bindgen::JsCast::dyn_ref()
使用 web-sys crate 我想从 HTMLDocument 访问 cookie method。
我想做这样的事情。确实这行不通。
let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let cookie = document.cookie().unwrap();
//no method named `cookie` found for type `web_sys::features::gen_Document::Document` in the current scope
我需要访问 HTMLDocument 结构而不是 Document 结构。
Cargo.toml 启用了功能。
~snip~
[dependencies.web-sys]
version = "0.3.4"
features = [
"WebSocket",
'Window',
'Document',
'HtmlDocument',
]
根据 API 它应该像文档一样可以在 Window 下访问。
它似乎不适用于类似的东西:
let html_document = window.html_document().unwrap();
从 documentation HTMLDocument 应该扩展 Document。
我知道 Rust 中没有继承,但是 我不能这样从文档转换它:
let html_document = web_sys::HtmlDocument::from(document);
与into
功能相同。
是否可以通过这种方式访问 HTMLDocument?
还有其他方法可以使用 web-sys 访问 cookie 吗?
是否有正在进行的工作目前无法正常工作?
您需要的是 动态转换,这是通过 wasm_bindgen::JsCast::dyn_into()
:
use wasm_bindgen::JsCast;
let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let html_document = document.dyn_into::<web_sys::HtmlDocument>().unwrap();
let cookie = html_document.cookie().unwrap();
还有不消耗原始对象的变体wasm_bindgen::JsCast::dyn_ref()