--- title: 'web-sys' description: 'web-sys crate 為 Web API 提供綁定。 ' --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' [`web-sys` crate](https://crates.io/crates/web-sys) 為 Web API 提供綁定。這是從瀏覽器 WebIDL 產生的,這就是為什麼有些名稱如此之長,有些類型如此模糊的原因。 ## `web-sys` 中的特性 (features) `web-sys` crate 中啟用了所有特性可能會為 Wasm 應用程式增加很多冗餘。為了解決這個問題,大多數類型都是透過啟用 features 進行控制的,這樣你只需要包含你的應用程式所需的類型。 Yew 啟用了 `web-sys` 的幾個特性,並在其公共 API 中公開了一些類型。你通常需要自行將 `web-sys` 新增為依賴項。 ## `web-sys` 中的繼承 在[模擬繼承](./wasm-bindgen.mdx#simulating-inheritance)部分,你可以了解到 Rust 通常提供了一種模擬 JavaScript 中繼承的方法。這在 `web-sys` 中非常重要,因為了解一個類型上有哪些方法意味著了解它的繼承。 這一部分將查看一個特定的元素,並使用Rust 呼叫[`Deref::deref`](https://doc.rust-lang.org/std/ops/trait.Deref.html#tymethod.deref) 列出其繼承,直到該值為[`JsValue`](./wasm-bindgen.mdx#jsvalue)。 ```rust use std::ops::Deref; use web_sys::{ Element, EventTarget, HtmlElement, HtmlTextAreaElement, Node, }; fn inheritance_of_text_area(text_area: HtmlTextAreaElement) { // HtmlTextAreaElement 是 HTML 中的