aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/document.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/document.rs')
-rw-r--r--src/components/script/dom/document.rs18
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()