diff options
author | Youngsoo Son <ysoo.son@samsung.com> | 2013-07-25 13:51:36 +0900 |
---|---|---|
committer | Youngsoo Son <ysoo.son@samsung.com> | 2013-07-25 13:51:36 +0900 |
commit | f8f9d203f5f662945b2c30a50cc4ff74c049fe5c (patch) | |
tree | 189736f935f8e5e04fb2ceddb816bd3048bc0872 /src/components/script/dom/document.rs | |
parent | fe91f6e238acd9e423d98c18c906416be3090eb3 (diff) | |
download | servo-f8f9d203f5f662945b2c30a50cc4ff74c049fe5c.tar.gz servo-f8f9d203f5f662945b2c30a50cc4ff74c049fe5c.zip |
Add binding for Document (getElementsByName)
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() |