UNPKG

browsernizr

Version:

Modernizr wrapper for use with browserify

63 lines (57 loc) 2.03 kB
/*! { "name": "onInput Event", "property": "oninput", "notes": [{ "name": "MDN Docs", "href": "https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput" },{ "name": "WHATWG Spec", "href": "https://html.spec.whatwg.org/multipage/input.html#common-input-element-attributes" },{ "name": "Related Github Issue", "href": "https://github.com/Modernizr/Modernizr/issues/210" }], "authors": ["Patrick Kettner"], "tags": ["event"] } !*/ /* DOC `oninput` tests if the browser is able to detect the input event */ var Modernizr = require('./../../lib/Modernizr.js'); var docElement = require('./../../lib/docElement.js'); var createElement = require('./../../lib/createElement.js'); var testStyles = require('./../../lib/testStyles.js'); var hasEvent = require('./../../lib/hasEvent.js'); Modernizr.addTest('oninput', function() { var input = createElement('input'); var supportsOnInput; input.setAttribute('oninput', 'return'); if (hasEvent('oninput', docElement) || typeof input.oninput === 'function') { return true; } // IE doesn't support onInput, so we wrap up the non IE APIs // (createEvent, addEventListener) in a try catch, rather than test for // their trident equivalent. try { // Older Firefox didn't map oninput attribute to oninput property var testEvent = document.createEvent('KeyboardEvent'); supportsOnInput = false; var handler = function(e) { supportsOnInput = true; e.preventDefault(); e.stopPropagation(); }; testEvent.initKeyEvent('keypress', true, true, window, false, false, false, false, 0, 'e'.charCodeAt(0)); docElement.appendChild(input); input.addEventListener('input', handler, false); input.focus(); input.dispatchEvent(testEvent); input.removeEventListener('input', handler, false); docElement.removeChild(input); } catch (e) { supportsOnInput = false; } return supportsOnInput; });