forked from MicrosoftEdge/Demos-old
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFeatureDetectIEPlatformPreview.js
179 lines (146 loc) · 6.18 KB
/
FeatureDetectIEPlatformPreview.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
if (typeof (self.$BrowserInfo) == "undefined") {
self.$BrowserInfo = new function () {
var isPPB = false; // if true, browser is an Internet Explorer platform preview
var isPPB6 = false; // if true, browser is IE9 PPB6 or newer
var isIE = false; // if true, browser is any version of Internet Explorer (including platform previews)
var isChrome = false; // if true, browser is any version of Chrome
var isOpera = false; // if true, browser is any version of Opera
var isSafari = false; // if true, browser is any version of Safari
var isFirefox = false; // if true, browser is any version of Firefox
var browserVersion = 0; // Browser version number
/* Initialize flags ------------------------------------------------*/
var version;
// Parse UA string for browser name and version
if (version = /MSIE (\d+\.\d+)/.exec(navigator.userAgent)) {
isIE = true;
browserVerison = parseFloat(version[1]);
} else if (version = /Firefox\/(\d+\.\d+)/.exec(navigator.userAgent)) {
isFirefox = true;
browserVerison = parseFloat(version[1]);
} else if (version = /Chrome\/(\d+\.\d+)/.exec(navigator.userAgent)) {
isChrome = true;
browserVerison = parseFloat(version[1]);
} else if (version = /Opera.*Version\/(\d+\.\d+)/.exec(navigator.userAgent)) {
isOpera = true;
browserVerison = parseFloat(version[1]);
} else if (version = /Version\/(\d+\.\d+).*Safari/.exec(navigator.userAgent)) {
isSafari = true;
browserVerison = parseFloat(version[1]);
}
// Check if this is an IE platform preview build, and if so, which one.
if (isIE && typeof document.documentMode != 'undefined') {
if (window.external == null) {
isPPB = true;
if (!(document.createElement("article") instanceof HTMLUnknownElement)) {
isPPB6 = true;
}
}
}
// Returns true if browser is any version of Internet Explorer, false otherwise
this.IsBrowserInternetExplorer = function () {
return isIE;
}
// Returns true if browser is any version of Internet Explorer Platform Preview, false otherwise
this.IsBrowserPlatformPreview = function () {
return isPPB;
}
// Returns true if browser is Internet Explorer 9 Platform Preview 6, or greater
this.IsBrowserPlatformPreview6Plus = function () {
return isPPB6;
}
// Returns true if browser is any version of Chrome, false otherwise
this.IsBrowserChrome = function () {
return isChrome;
}
// Returns true if browser is any version of Firefox, false otherwise
this.IsBrowserFirefox = function () {
return isFirefox;
}
// Returns true if browser is any version of Opera, false otherwise
this.IsBrowserOpera = function () {
return isOpera;
}
// Returns true if browser is any version of Safari, false otherwise
this.IsBrowserSafari = function () {
return isSafari;
}
// Returns browser version, as float
this.GetBrowserVersion = function () {
return browserVerison;
}
}
}
// Define general feature detect for ensuring user has the full build of IE (not PPB) version 9 or greater
if(typeof($FeatureDetectIEFullBrowser9Plus) == 'undefined')
{
self.$FeatureDetectIEFullBrowser9Plus = {
test: function () {
var ppb = $BrowserInfo.IsBrowserPlatformPreview();
if (ppb) {
$FeatureDetect.fail("The Platform Preview does not have the user interface features needed to view this demo.", "fullie");
}
}
}
};
// Define Feature Detect logic for displaying failure message
if (typeof ($FeatureDetect) == 'undefined') {
self.$FeatureDetect = {
fail: function (message, upgradeChoices) {
var choices = "";
if (upgradeChoices) {
choices = "&choices=" + encodeURI(upgradeChoices);
}
if ($QueryStringHelper.parse("o") == "1") {
return;
}
window.location.replace("../../Info/MissingBrowserFeature/Default.html?message=" + encodeURI(message) + "&url=" + window.location + choices);
}
}
}
// Define helper object to parse query string
if (typeof ($QueryStringHelper) == "undefined") {
self.$QueryStringHelper = {
parse: function (variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1].replace(/%20/g, " ");
}
}
return false;
}
}
}
// Special thanks to QuirksMode.org (http://www.quirksmode.org/js/cookies.html) for these
// excellent cookie helper functions
if (typeof (createCookie) != "function") {
self.createCookie = function (name, value, ms) {
if (ms) {
var date = new Date();
date.setTime(date.getTime() + (ms));
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
}
if (typeof (readCookie) != "function") {
self.readCookie = function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
}
if (typeof (eraseCookie) != "function") {
self.eraseCookie = function (name) {
createCookie(name, "", -1);
}
}
$FeatureDetectIEFullBrowser9Plus.test();