ソースを参照

better detection for inputevent

Robin Herbots 13 年 前
コミット
1ce0092e40
1 ファイル変更13 行追加2 行削除
  1. 13 2
      js/jquery.inputmask.js

+ 13 - 2
js/jquery.inputmask.js

@@ -63,8 +63,7 @@
 
 
         $.fn.inputmask = function (fn, options) {
         $.fn.inputmask = function (fn, options) {
             var opts = $.extend(true, {}, $.inputmask.defaults, options);
             var opts = $.extend(true, {}, $.inputmask.defaults, options);
-            var pasteEvent = (($.browser.opera || ($.browser.mozilla && parseFloat($.browser.version.substr(0,3)) < 1.9)) ? 'input' : 'paste');
-
+            var pasteEvent = isInputEventSupported('paste') ? 'paste' : 'input');
 
 
             var iphone = navigator.userAgent.match(/iphone/i) != null;
             var iphone = navigator.userAgent.match(/iphone/i) != null;
             var android = navigator.userAgent.match(/android.*mobile safari.*/i) != null;
             var android = navigator.userAgent.match(/android.*mobile safari.*/i) != null;
@@ -171,6 +170,18 @@
             }
             }
 
 
             //helper functions
             //helper functions
+            function isInputEventSupported(eventName) {
+                var el = document.createElement('input'), 
+		  eventName = 'on' + eventName,
+		  isSupported = (eventName in el);
+                if (!isSupported) {
+                  el.setAttribute(eventName, 'return;');
+                  isSupported = typeof el[eventName] == 'function';
+                }
+                el = null;
+                return isSupported;
+            }
+
             function resolveAlias(aliasStr) {
             function resolveAlias(aliasStr) {
                 var aliasDefinition = opts.aliases[aliasStr];
                 var aliasDefinition = opts.aliases[aliasStr];
                 if (aliasDefinition) {
                 if (aliasDefinition) {