-
Notifications
You must be signed in to change notification settings - Fork 0
/
supports.js
74 lines (56 loc) · 1.99 KB
/
supports.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
(function() {
var checkArgs = function(testType, args) {
if (!args.length || !Array.isArray(args)) throw new Error('supports.' + testType + '() expects an array');
var tests = [];
var i;
for (i = 0; i < args.length; i++) {
if (args[i] === 'each' || args[i] === 'one') break;
if (supports[args[i]] === undefined) throw new Error('supports.' + testType + '() could not find property \'' + args[i]+ '\'');
tests.push(supports[args[i]]);
}
return tests[testType](function(el) {
return el;
});
};
var supports = {
some: function(args) {
return checkArgs('some', args);
},
every: function(args) {
return checkArgs('every', args);
},
classlist: 'classList' in document.documentElement,
deviceMotion : ('DeviceMotionEvent' in window),
deviceOrientation : ('DeviceOrientationEvent' in window),
fetch: 'fetch' in window,
filereader: !!window.FileReader,
geolocation: 'geolocation' in navigator,
history: 'pushState' in window.history,
intl: 'Intl' in window,
matchmedia: !!('matchMedia' in window || 'msMatchMedia' in window),
serviceworkers: (function() {
return 'serviceWorker' in navigator;
})(),
touchevents: !!(
('ontouchstart' in window) ||
window.navigator && window.navigator.msPointerEnabled && window.MSGesture ||
window.DocumentTouch && document instanceof DocumentTouch
),
webgl: (function() {
var canvas = document.createElement('canvas');
var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
return !!(gl && gl instanceof WebGLRenderingContext);
})(),
webgl2: (function() {
var canvas = document.createElement('canvas');
return !!canvas.getContext('webgl2');
})(),
webworkers: 'Worker' in window,
};
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = supports;
}
else {
window.supports = supports;
}
})();