aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/htmlstyleelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/htmlstyleelement.rs')
-rw-r--r--src/components/script/dom/htmlstyleelement.rs15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/components/script/dom/htmlstyleelement.rs b/src/components/script/dom/htmlstyleelement.rs
index 485a2990602..b2138b500ad 100644
--- a/src/components/script/dom/htmlstyleelement.rs
+++ b/src/components/script/dom/htmlstyleelement.rs
@@ -9,7 +9,7 @@ use dom::document::Document;
use dom::element::HTMLStyleElementTypeId;
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
use dom::htmlelement::HTMLElement;
-use dom::node::{Node, NodeMethods, ElementNodeTypeId, window_from_node};
+use dom::node::{Node, NodeMethods, NodeHelpers, ElementNodeTypeId, window_from_node};
use dom::virtualmethods::VirtualMethods;
use html::cssparse::parse_inline_css;
use layout_interface::{AddStylesheetMsg, LayoutChan};
@@ -49,6 +49,11 @@ pub trait StyleElementHelpers {
impl<'a> StyleElementHelpers for JSRef<'a, HTMLStyleElement> {
fn parse_own_css(&self) {
let node: &JSRef<Node> = NodeCast::from_ref(self);
+
+ if !node.is_in_doc() {
+ return;
+ }
+
let win = window_from_node(node).root();
let url = win.deref().page().get_url();
@@ -72,4 +77,12 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLStyleElement> {
}
self.parse_own_css();
}
+
+ fn bind_to_tree(&self) {
+ match self.super_type() {
+ Some(ref s) => s.bind_to_tree(),
+ _ => ()
+ }
+ self.parse_own_css();
+ }
}