|
20 | 20 | margin: 5vh auto; |
21 | 21 | padding: 0 3vw 0 3vw; |
22 | 22 | } |
23 | | - #links a, #links #ua { |
| 23 | + #links a, #links .browser-info { |
24 | 24 | font-family: "Source Code Pro", Monaco, Consolas, "Courier New", monospace, Impact; |
25 | 25 | font-size: 3.5vh; |
26 | 26 | padding: 0.75vh 10vw 0.75vh 10vw; |
|
37 | 37 | transition: all 150ms; |
38 | 38 | font-weight: bold; |
39 | 39 | } |
40 | | - #links #ua { |
| 40 | + #links .browser-info { |
41 | 41 | margin-top: 3vh; |
42 | 42 | padding: 0.75vh 0vh; |
| 43 | + line-height: 1.5em; |
43 | 44 | } |
44 | 45 | @media (min-height: 1000px) { |
45 | | - #links a, #links #ua { |
| 46 | + #links a, #links .browser-info { |
46 | 47 | font-size: 2.5vh; |
47 | 48 | } |
48 | 49 | } |
49 | 50 | @media (max-width: 600px) and (min-height: 600px) { |
50 | | - #links a, #links #ua { |
| 51 | + #links a, #links .browser-info { |
51 | 52 | font-size: 5vw; |
52 | 53 | } |
53 | 54 | } |
|
119 | 120 | </style> |
120 | 121 | <script> |
121 | 122 |
|
122 | | - function simplifyUserAgent(ua) { |
| 123 | + function getBrowserVersion(ua) { |
| 124 | + var ua = navigator.userAgent; |
| 125 | + |
123 | 126 | var regexes = [ |
124 | | - /Chrome\/[\d\.]*\b/, |
125 | | - /CriOS\/[\d\.]*\b/, |
126 | | - /Firefox\/[\d\.]*\b/, |
127 | | - /OPR\/[\d\.]*\b/, |
128 | | - /OPiOS\/[\d\.]*\b/, |
129 | | - /Version\/[\d\.]*\b/ /* Safari has "Version/8.0.5 Safari/600.5.17", but "Safari/600.5.17" is the WebKit version, which Chrome and Opera also include. */ |
130 | | - ] |
| 127 | + |
| 128 | + [/^.*Chrome\/([\d\.]*)\b.*$/, "Chrome $1"], |
| 129 | + [/^.*CriOS\/([\d\.]*)\b.*$/, "Chrome $1"], |
| 130 | + [/^.*Firefox\/([\d\.]*)\b.*$/, "Firefox $1"], |
| 131 | + [/^.*OPR\/([\d\.]*)\b.*$/, "Opera $1"], |
| 132 | + [/^.*OPiOS\/([\d\.]*)\b.*$/, "Opera Mini $1"], |
| 133 | + /* This has to go last: Safari has "Version/8.0.5 Safari/600.5.17", but "Safari/600.5.17" is the WebKit version, which Chrome and Opera also include.*/ |
| 134 | + [/^.*Version\/([\d\.]*)\b.*$/, "Safari $1"] |
| 135 | + ]; |
131 | 136 |
|
132 | 137 | for (i in regexes) { |
133 | | - var match = regexes[i].exec(ua); |
| 138 | + var match = regexes[i][0].exec(ua); |
134 | 139 | if (match) { |
135 | | - return match[0]; |
| 140 | + return ua.replace(regexes[i][0], regexes[i][1]); |
136 | 141 | } |
137 | 142 | } |
138 | 143 | return ua; |
139 | 144 | } |
140 | 145 |
|
| 146 | + function getOS() { |
| 147 | + var ua = navigator.userAgent; |
| 148 | + |
| 149 | + var regexes = [ |
| 150 | + [/^.*Mac OS X (\d+)_(\d+)_(\d+).*$/g, "OSX $1.$2.$3"], // OSX Chrome, OSX Safari, OSX Opera |
| 151 | + [/^.*Mac OS X (\d+)_(\d+).*$/g, "OSX $1.$2"], // Just in case? |
| 152 | + [/^.*Mac OS X (\d+)\.(\d+).*$/g, "OSX $1.$2"], // OSX Firefox |
| 153 | + [/^.*iPhone OS (\d+)_(\d+).*OPiOS.*$/g, null], // iPhone Opera doesn't seem to pick up the OS dynamically? |
| 154 | + [/^.*iPhone OS (\d+)_(\d+).*$/g, "iOS $1.$2 (iPhone)"], // iPhone WebKit |
| 155 | + [/^.*iPad.*OS (\d+)_(\d+).*$/g, "iOS $1.$2 (iPad)"], // iPad WebKit |
| 156 | + [/^.*Android (\d+(\.\d+)+).*; ([^;]+) Build.*$/g, "Android $1 ($3)"], // Android + device name |
| 157 | + [/^.*Android (\d+(\.\d+)+).*$/g, "Android $1"], |
| 158 | + [/^.*Linux.*$/g, "Linux"], |
| 159 | + [/^.*Windows.*$/g, "Windows"], |
| 160 | + ]; |
| 161 | + |
| 162 | + for (i in regexes) { |
| 163 | + var match = regexes[i][0].exec(ua); |
| 164 | + if (match) { |
| 165 | + if (!regexes[i][1]) { |
| 166 | + return null; |
| 167 | + } |
| 168 | + return ua.replace(regexes[i][0], regexes[i][1]); |
| 169 | + } |
| 170 | + } |
| 171 | + return null; |
| 172 | + } |
| 173 | + |
141 | 174 | window.addEventListener("load", function() { |
142 | 175 | document.getElementById("ua").title = navigator.userAgent; |
143 | | - document.getElementById("ua").innerHTML = "UA: " + simplifyUserAgent(navigator.userAgent); |
| 176 | + document.getElementById("ua").textContent = getBrowserVersion(); |
| 177 | + if (getOS()) { |
| 178 | + document.getElementById("os").textContent = getOS(); |
| 179 | + } |
144 | 180 | console.log(navigator.userAgent); |
145 | 181 | document.getElementById("reveal-more").addEventListener("click", function(e) { |
146 | 182 | document.getElementById("links").classList.add("show-more"); |
|
184 | 220 | <a href="https://mixed.badssl.com/mixed/font" class="more bad no-interstitial">mixed/font</a> |
185 | 221 | <a href="https://long-extended-subdomain-name-containing-many-letters-and-dashes.badssl.com/" class="more good">long-extended-subdomain-name-containing-many-letters-and-dashes</a> |
186 | 222 | <a href="https://longextendedsubdomainnamewithoutdashesinordertotestwordwrapping.badssl.com/" class="more good">longextended<wbr>subdomainname<wbr>withoutdashes<wbr>inordertotest<wbr>wordwrapping</a> |
187 | | - <div id="ua"></div> |
| 223 | + <div class="browser-info"> |
| 224 | + <span id="ua"></span> |
| 225 | + <br> |
| 226 | + <span id="os"></span> |
| 227 | + </div> |
188 | 228 | </div> |
189 | 229 |
|
190 | 230 | <!-- Start of GitHub ribbon. --> |
|
0 commit comments