12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*!
- {
- "name": "Proximity API",
- "property": "proximity",
- "authors": ["Cătălin Mariș"],
- "tags": ["events", "proximity"],
- "caniuse": "proximity",
- "notes": [{
- "name": "MDN Docs",
- "href": "https://developer.mozilla.org/en-US/docs/Web/API/Proximity_Events"
- },{
- "name": "W3C Spec",
- "href": "https://www.w3.org/TR/proximity/"
- }]
- }
- !*/
- /* DOC
- Detects support for an API that allows users to get proximity related information from the device's proximity sensor.
- */
- define(['Modernizr', 'addTest'], function(Modernizr, addTest) {
- Modernizr.addAsyncTest(function() {
- var timeout;
- var timeoutTime = 300;
- function advertiseSupport() {
- // Clean up after ourselves
- clearTimeout(timeout);
- window.removeEventListener('deviceproximity', advertiseSupport);
- // Advertise support as the browser supports
- // the API and the device has a proximity sensor
- addTest('proximity', true);
- }
- // Check if the browser has support for the API
- if ('ondeviceproximity' in window && 'onuserproximity' in window) {
- // Check if the device has a proximity sensor
- // ( devices without such a sensor support the events but
- // will never fire them resulting in a false positive )
- window.addEventListener('deviceproximity', advertiseSupport);
- // If the event doesn't fire in a reasonable amount of time,
- // it means that the device doesn't have a proximity sensor,
- // thus, we can advertise the "lack" of support
- timeout = setTimeout(function() {
- window.removeEventListener('deviceproximity', advertiseSupport);
- addTest('proximity', false);
- }, timeoutTime);
- } else {
- addTest('proximity', false);
- }
- });
- });
|