diff options
Diffstat (limited to 'components/script/dom/htmlscriptelement.rs')
-rw-r--r-- | components/script/dom/htmlscriptelement.rs | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index e1e8dabac7b..8703a45ea82 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -486,11 +486,7 @@ impl HTMLScriptElement { document.set_current_script(Some(self)); // Step 5.a.2. - let window = window_from_node(self); - let line_number = if script.external { 1 } else { self.line_number as u32 }; - rooted!(in(window.get_cx()) let mut rval = UndefinedValue()); - window.upcast::<GlobalScope>().evaluate_script_on_global_with_result( - &script.text, script.url.as_str(), rval.handle_mut(), line_number); + self.run_a_classic_script(&script); // Step 6. document.set_current_script(old_script.r()); @@ -506,6 +502,24 @@ impl HTMLScriptElement { } } + // https://html.spec.whatwg.org/multipage/#run-a-classic-script + pub fn run_a_classic_script(&self, script: &ClassicScript) { + // TODO use a settings object rather than this element's document/window + // Step 2 + let document = document_from_node(self); + if !document.is_fully_active() || !document.is_scripting_enabled() { + return; + } + + // Steps 4-10 + let window = window_from_node(self); + let line_number = if script.external { 1 } else { self.line_number as u32 }; + rooted!(in(window.get_cx()) let mut rval = UndefinedValue()); + let global = window.upcast::<GlobalScope>(); + global.evaluate_script_on_global_with_result( + &script.text, script.url.as_str(), rval.handle_mut(), line_number); + } + pub fn queue_error_event(&self) { let window = window_from_node(self); window.dom_manipulation_task_source().queue_simple_event(self.upcast(), atom!("error"), &window); |