Rust wasm: как получить доступ к HTMLDocument из веб-системы? - PullRequest
1 голос
/ 06 мая 2020

Используя ящик web-sys Я хочу получить доступ к методу cook ie из HTMLDocument.

Я хочу сделать что-то вроде этого. На самом деле это не работает.

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.

Car go .toml с включенными функциями.

~snip~
[dependencies.web-sys]
version = "0.3.4"
features = [
  "WebSocket",
  'Window',
  'Document',
  'HtmlDocument',
]

Согласно API он должен быть доступен в окне, например в документе.

Кажется, он недоступен с чем-то вроде:

let html_document = window.html_document().unwrap();

Из документация HTMLDocument должен расширять Document.

Я знаю, что в Rust нет наследования, но я не могу преобразовать его из документа как такового:

let html_document = web_sys::HtmlDocument::from(document);

То же самое с функцией into.

Можно ли получить доступ к HTMLDocument таким образом?

Есть ли другой способ получить доступ к повару ie с помощью web-sys?

Это что-то надуманное -прогресс, который сейчас не работает?

1 Ответ

1 голос
/ 06 мая 2020

Что вам нужно, это динамика c cast , то есть 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(), который не использует исходный объект.

...