-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBrowserFeatures.js
83 lines (83 loc) · 2.08 KB
/
BrowserFeatures.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
75
76
77
78
79
80
81
82
83
/**
*
* @Name : BrowserFeatures.js
* @Version : 1.0
* @Programmer : Max
* @Date : 2018-05-19
* @Released under : https://github.com/BaseMax/BrowserFeaturesJs/blob/master/LICENSE
* @Repository : https://github.com/BaseMax/BrowserFeaturesJs
*
**/
;(function(window,document)
{
"use strict";
/**
* @struct utilities
*
* @goal : Global Private Functions
*
* @return struct
**/
var utilities =
{
create : function(value)
{
return document.createElement(value);
},
function : function(value)
{
try
{
Function(value);
return true;
}
catch(why)
{
return false;
}
},
reference : function(value)
{
if(window[value])
{
return true;
}
return false;
},
};
/**
* @struct utilities
*
* @goal : Public Objects
*
* @return struct
**/
var browser=
{
function_generator : utilities.function('function* g(){}'),
function_async : utilities.function('async function f(){}'),
function_generator_async : utilities.function('async function* fg(){}'),
event_target : utilities.function('new EventTarget'),
data_transfer_item : utilities.reference('DataTransferItem'),
data_transfer_item_list : utilities.reference('DataTransferItemList'),
broad_cast_channel : utilities.reference('BroadcastChannel'),
viewport : utilities.reference('VisualViewport'),
font : utilities.reference('FontFace'),
custom_element : utilities.reference('customElements'),
animate : utilities.reference('Element.prototype.animate'),
svg : !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,
touch : !!(("ontouchstart" in window) || window.navigator && window.navigator.msPointerEnabled && window.MSGesture || window.DocumentTouch && document instanceof DocumentTouch),
webgl : (function(element)
{
try
{
return !!(window.WebGLRenderingContext && (element.getContext("webgl") || element.getContext("experimental-webgl")));
}
catch(error)
{
return false;
}
})(utilities.create("canvas")),
};
window.browser = browser;
}(window,document));