diff options
-rw-r--r-- | components/script/dom/document.rs | 4 | ||||
-rw-r--r-- | components/script/dom/htmltextareaelement.rs | 8 | ||||
-rw-r--r-- | tests/html/test_textarea_input.html | 15 |
3 files changed, 21 insertions, 6 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 71b3a26873c..6da0dd57316 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -629,7 +629,7 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { ctrl, alt, shift, meta, None, props.key_code).root(); let event = EventCast::from_ref(keyevent.r()); - let _ = target.DispatchEvent(event); + event.fire(target); let mut prevented = event.DefaultPrevented(); // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#keys-cancelable-keys @@ -642,7 +642,7 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { ctrl, alt, shift, meta, props.char_code, 0).root(); let ev = EventCast::from_ref(event.r()); - let _ = target.DispatchEvent(ev); + ev.fire(target); prevented = ev.DefaultPrevented(); // TODO: if keypress event is canceled, prevent firing input events } diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 41570fd1fa1..acacf3cb01a 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -13,7 +13,7 @@ use dom::bindings::codegen::InheritTypes::{ElementCast, EventTargetCast, HTMLEle use dom::bindings::codegen::InheritTypes::{HTMLTextAreaElementDerived, HTMLFieldSetElementDerived}; use dom::bindings::codegen::InheritTypes::{KeyboardEventCast, TextDerived}; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JS, JSRef, LayoutJS, Temporary, OptionalRootable}; +use dom::bindings::js::{JSRef, LayoutJS, Temporary, OptionalRootable}; use dom::bindings::refcounted::Trusted; use dom::document::{Document, DocumentHelpers}; use dom::element::{Element, AttributeHandlers}; @@ -347,7 +347,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> { KeyReaction::DispatchInput => { self.value_changed.set(true); - if event.IsTrusted() == true { + if event.IsTrusted() { let window = window_from_node(*self).root(); let window = window.r(); let chan = window.script_chan(); @@ -355,7 +355,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLTextAreaElement> { let dispatcher = ChangeEventRunnable { element: handler, }; - chan.send(ScriptMsg::RunnableMsg(box dispatcher)); + let _ = chan.send(ScriptMsg::RunnableMsg(box dispatcher)); } self.force_relayout(); @@ -382,4 +382,4 @@ impl Runnable for ChangeEventRunnable { let target = self.element.to_temporary().root(); target.r().dispatch_change_event(); } -}
\ No newline at end of file +} diff --git a/tests/html/test_textarea_input.html b/tests/html/test_textarea_input.html new file mode 100644 index 00000000000..7fd3ab7cb36 --- /dev/null +++ b/tests/html/test_textarea_input.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> +</head> +<body> + <textarea id="textarea"> + </textarea> +</body> +<script> + var area = document.getElementById('textarea'); + area.addEventListener('input', function() { + alert('input detected'); + }); +</script> +</html>
\ No newline at end of file |