mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-18 15:41:05 +00:00
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
/*!
|
|
{
|
|
"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
|
|
*/
|
|
define(['Modernizr', 'docElement', 'createElement', 'testStyles', 'hasEvent'], function(Modernizr, docElement, createElement, testStyles, hasEvent) {
|
|
|
|
Modernizr.addTest('oninput', function() {
|
|
var input = createElement('input');
|
|
var supportsOnInput;
|
|
input.setAttribute('oninput', 'return');
|
|
input.style.cssText = 'position:fixed;top:0;';
|
|
|
|
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;
|
|
});
|
|
});
|