diff options
Diffstat (limited to 'src/components/script/dom/document.rs')
-rw-r--r-- | src/components/script/dom/document.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 2a0afc0010e..15e52846aec 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -12,6 +12,8 @@ use script_task::global_script_context; use js::jsapi::{JS_AddObjectRoot, JS_RemoveObjectRoot}; use servo_util::tree::{TreeNodeRef, TreeUtils}; +use std::str::eq_slice; + pub struct Document { root: AbstractNode<ScriptView>, wrapper: WrapperCache, @@ -52,6 +54,22 @@ impl Document { Some(HTMLCollection::new(elements)) } + pub fn getElementsByName(&self, name: DOMString) -> Option<@mut HTMLCollection> { + let mut elements = ~[]; + let name = name.to_str(); + let _ = for self.root.traverse_preorder |child| { + if child.is_element() { + do child.with_imm_element |elem| { + match elem.get_attr("name") { + Some(val) => if eq_slice(val, name) { elements.push(child) }, + None() => () + } + } + } + }; + Some(HTMLCollection::new(elements)) + } + pub fn content_changed(&self) { for self.window.iter().advance |window| { window.content_changed() |