rust - 如何访问 web_sys 中的导航器或其他基于 Web 的资源?
问题描述
最近我阅读了 Rust 的文档,现在我决定尝试使用 web_sys API。我正在尝试使用Navigator::do_not_track
吸气剂......好吧,更具体地说,我想打印返回值。根据文档,这是 getter 的签名:
pub fn do_not_track(&self) -> String
如果我理解正确,我应该能够使用format!
宏:
format!("{}", Navigator::do_not_track);
毫无疑问,我已经正确导入了 Navigator API。错误是:
error[E0277]: `for<'r> fn(&'r web_sys::features::gen_Navigator::Navigator) -> std::string::String {web_sys::features::gen_Navigator::Navigator::do_not_track}` doesn't implement `std::fmt::Display`
--> src/lib.rs:19:19
|
19 | format!("{}", Navigator::do_not_track);
| ^^^^^^^^^^^^^^^^^^^^^^^ `for<'r> fn(&'r web_sys::features::gen_Navigator::Navigator) -> std::string::String {web_sys::features::gen_Navigator::Navigator::do_not_track}` cannot be formatted with the default formatter
|
= help: the trait `std::fmt::Display` is not implemented for `for<'r> fn(&'r web_sys::features::gen_Navigator::Navigator) -> std::string::String {web_sys::features::gen_Navigator::Navigator::do_not_track}`
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
= note: required by `std::fmt::Display::fmt`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
如果我尝试使用web_sys::navigator
,我会得到
could not find "navigator" in "web_sys"
如何使用 访问网络导航器 API web_sys
?
解决方案
请注意,这Navigator::do_not_track
是一个方法,这意味着Navigator
需要首先检索类型的值。混淆的一个可能来源是没有找到如何创建它。
在支持 DOM 的 JavaScript 环境中,作为全局变量找到的大多数 Web 资源都可以通过该Window
资源获得。你需要:
- 通过启用相应的 Cargo 功能确保预期资源处于活动状态:
web_sys = { version = "0.3", features = ["Navigator, Window"] }
通过 检索全局窗口
web_sys::window
,检查它是否可用。您最终可以通过一种可用的 getter 方法 (
window.navigator()
) 检索预期的资源。
编码:
let window = web_sys::window().expect("Missing Window");
let navigator = window.navigator();
let do_not_track = navigator.do_not_track();
也可以看看:
- 该
wasm-bindgen
指南,其中还包括使用指南web-sys
。
推荐阅读
- arrays - Ruby - 失败语句/保护条件返回 nil
- jquery - 根据 Html 结构创建嵌套的 Json 数据
- ffmpeg - FFMPEG:当输入是可变帧速率视频时,如何避免交叉渐变剪辑输出中的音频/视频不同步
- docker - 服务器启动后运行命令 - Docker、scrapyd、scrapyd-deploy
- r - 有没有办法在 R 中使用 iconv() 来正确编码整个数据帧?
- r - 在 R 中重新采样横截面时间序列数据
- python - 使用 BeautifulSoup 从investing.com 获取BTC/ETH 数据
- python - 在熊猫中设置值不知道列和行是否存在,避免 NaN
- c++ - 字数统计项目的多个哈希表
- github - 我的 GitHub 存储库已更新,但我发布的 GitHub 页面不会更新。为什么是这样?