add use_eval()to desktop and web

This commit is contained in:
Ilya Maximov committed 2022-03-17 23:47:11 +01:00
1 parent 08fa2382b0
commit 5cbf2698fd
5 files changed
+48 -2

No files matched your search

+2
View File
@@ -62,12 +62,14 @@ use dioxus::VirtualDom;
pub use dioxus_core as dioxus;
use dioxus_core::prelude::Component;
use futures_util::FutureExt;
pub use crate::util::use_eval;
mod cache;
mod cfg;
mod dom;
mod rehydrate;
mod ric_raf;
mod util;
/// Launch the VirtualDOM given a root component and a configuration.
///
+23
View File
@@ -1 +1,24 @@
//! Utilities specific to websys
use dioxus_core::*;
/// Get a closure that executes any JavaScript in the webpage.
///
/// # Safety
///
/// Please be very careful with this function. A script with too many dynamic
/// parts is practically asking for a hacker to find an XSS vulnerability in
/// it. **This applies especially to web targets, where the JavaScript context
/// has access to most, if not all of your application data.**
///
/// # Panics
///
/// The closure will panic if the provided script is not valid JavaScript code
/// or if it returns an uncaught error.
pub fn use_eval<S: std::fmt::Display>(_cx: &ScopeState) -> impl Fn(S) {
|script| {
js_sys::Function::new_no_args(&script.to_string())
.call0(&wasm_bindgen::JsValue::NULL)
.expect("failed to eval script");
}
}