diff --git a/src/components/script/dom/htmlanchorelement.rs b/src/components/script/dom/htmlanchorelement.rs
index 5b905b1bd44..b69536a3303 100644
--- a/src/components/script/dom/htmlanchorelement.rs
+++ b/src/components/script/dom/htmlanchorelement.rs
@@ -72,6 +72,32 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLAnchorElement> {
Some(htmlelement as &VirtualMethods)
}
+ fn after_set_attr(&self, name: DOMString, value: DOMString) {
+ match self.super_type() {
+ Some(ref s) => s.after_set_attr(name.clone(), value.clone()),
+ _ => (),
+ }
+
+ let node: &JSRef = NodeCast::from_ref(self);
+ match name.as_slice() {
+ "href" => node.set_enabled_state(true),
+ _ => ()
+ }
+ }
+
+ fn before_remove_attr(&self, name: DOMString, value: DOMString) {
+ match self.super_type() {
+ Some(ref s) => s.before_remove_attr(name.clone(), value.clone()),
+ _ => (),
+ }
+
+ let node: &JSRef = NodeCast::from_ref(self);
+ match name.as_slice() {
+ "href" => node.set_enabled_state(false),
+ _ => ()
+ }
+ }
+
fn handle_event(&self, event: &JSRef) {
match self.super_type() {
Some(s) => {