Index: pkg/template_binding/lib/src/input_bindings.dart |
diff --git a/pkg/template_binding/lib/src/input_bindings.dart b/pkg/template_binding/lib/src/input_bindings.dart |
index 6292527d4b3ae3ffe588a116f94d5c3905c1bcc6..3cdc7db7bc70313e77873158de60bbd1dcaef32a 100644 |
--- a/pkg/template_binding/lib/src/input_bindings.dart |
+++ b/pkg/template_binding/lib/src/input_bindings.dart |
@@ -107,9 +107,12 @@ class _InputBinding extends Bindable { |
case 'select-multiple': |
case 'select-one': |
return element.onChange; |
- default: |
- return element.onInput; |
+ case 'range': |
+ if (window.navigator.userAgent.contains(new RegExp('Trident|MSIE'))) { |
+ return element.onChange; |
+ } |
} |
+ return element.onInput; |
} |
// |element| is assumed to be an HTMLInputElement with |type| == 'radio'. |
@@ -148,3 +151,17 @@ class _InputBinding extends Bindable { |
return value is int ? value : 0; |
} |
} |
+ |
+_getTreeScope(Node node) { |
+ Node parent; |
+ while ((parent = node.parentNode) != null ) { |
+ node = parent; |
+ } |
+ |
+ return _hasGetElementById(node) ? node : null; |
+} |
+ |
+// Note: JS code tests that getElementById is present. We can't do that |
+// easily, so instead check for the types known to implement it. |
+bool _hasGetElementById(Node node) => |
+ node is Document || node is ShadowRoot || node is SvgSvgElement; |