ua-parser-js/index.html
2013-03-20 14:11:42 +07:00

242 lines
8.1 KiB
HTML

<!doctype html>
<html>
<head>
<title>UAParser.js - Lightweight JavaScript-based User Agent String Parser</title>
<meta charset="utf-8">
<meta name="author" content="Faisalman" />
<meta name="description" content="UAParser.js Lightweight JavaScript-based User-Agent string parser. Supports browser & node.js environment. Also available as jQuery plugin & AMD module." />
<meta name="keywords" content="user agent, parser, javascript, detect, details, new, browser, engine, mobile, device, operating system" />
<style>
* {
margin: 0;
padding: 0;
}
html, input, select {
font: 14px/20px Helvetica, Ubuntu, Arial, Georgia, sans-serif;
color: #333;
}
body {
background: #fff;
margin: 0 auto;
padding: 50px 20px 20px;
width: 960px;
text-align: center;
}
header, section, footer {
padding: 20px 0 0;
position: relative;
}
h1 a {
text-decoration: none;
color: #333;
}
h1 {
margin-bottom: 30px;
font-size: 4em;
}
h1, h2, th, .ua {
font-family: Helvetica, Ubuntu, Arial, Georgia, sans-serif;
}
.share {
position: absolute;
width: 100px;
height: 20px;
top: 60px;
right: 0;
}
pre {
margin: 0 0 20px;
padding: 10px;
background: #f0f0f0;
white-space: pre-wrap;
overflow: auto;
}
table {
border-spacing: 0;
margin: auto;
width: 100%;
}
th {
font-size: 2em;
}
th, td {
border-left: 1px solid #fff;
border-top: 1px solid #fff;
min-width: 100px;
padding: 20px;
text-align: center;
}
tr:last-child th, tr:last-child td {
border-bottom: 1px solid #ccc;
}
th:last-child, td:last-child {
border-right: 1px solid #fff;
}
td {
color: red;
}
select, input, .grey {
color: #777;
width: 100%;
}
select, input {
border: 1px solid #ccc;
height: 30px;
box-shadow: inset 0 0 10px #ccc;
}
hr {
border: 0;
margin: 20px 0;
}
p {
margin: 10px 0;
}
pre, code {
font-family: 'Ubuntu Mono', monospace;
}
.ua {
font-size: 1.5em;
}
</style>
<script src="src/ua-parser.min.js"></script>
<script src="ua-list-example.js"></script>
</head>
<body>
<header>
<h1><a href="">UAParser.js</a></h1>
<h2>Lightweight JavaScript-based User-Agent String Parser</h2>
<hr />
<p class="share">
<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="fyzlman">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</p>
</header>
<section>
<pre>
</pre>
<table>
<tr>
<th>Browser</th>
<th>Engine</th>
<th>OS</th>
<th>Device</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</section>
<section>
<p>How well this parse other user-agent string? try select a string to be parsed:</p>
<select>
<option>Pick one</option>
</select>
<p>Want more? try enter any user-agent string you want to parse here:</p>
<input type="text" />
</section>
<footer>
<hr />
<p>
<span class="ua">UAParser.js</span> &copy; 2012-2013 Faisalman. <br/>
Dual licensed under GPLv2 & MIT license<br/>
Source: <a href="https://github.com/faisalman/ua-parser-js">https://github.com/faisalman/ua-parser-js</a><br/>
Node.js package: <a href="https://npmjs.org/package/ua-parser-js">https://npmjs.org/package/ua-parser-js</a><br/>
$.ua: <a href="http://plugins.jquery.com/ua-parser-js/">http://plugins.jquery.com/ua-parser-js/</a>
</p>
</footer>
<script>
var pre = document.getElementsByTagName('pre')[0];
var sel = document.getElementsByTagName('select')[0];
var txt = document.getElementsByTagName('input')[0];
var parser = new UAParser();
var fill = function(el, prop){
if(typeof prop === 'object'){
el.innerHTML = '';
el.appendChild(prop);
} else if(typeof prop === 'string'){
el.innerHTML = prop;
el.style.color = "green";
} else {
el.innerHTML = "No data";
el.style.color = "#ccc";
}
};
var imgMap = function(prop, key, arr){
var img = document.createElement('img');
img.src = 'images/undefined.png';
for(var i in arr){
if(arr.hasOwnProperty(i)){
var isobj = typeof arr[i] === 'object';
var r = isobj ? new RegExp(arr[i][0], 'i') : new RegExp(arr[i], 'i');
if(r.test(prop[key])){
img.src = 'images/'+(isobj?arr[i][1]:arr[i])+'.png';
return img;
} else if(prop[key] !== undefined){
img.src = 'images/check.png';
}
}
}
return img;
};
for(var i = 0; i < uaExampleList.length; i++){
var opt = document.createElement('option');
opt.innerHTML = uaExampleList[i];
sel.appendChild(opt);
}
var fillTable = function(uastring){
if(uastring) parser.setUA(uastring);
var browser = parser.getBrowser();
var engine = parser.getEngine();
var os = parser.getOS();
var device = parser.getDevice();
var tbl = document.getElementsByTagName('td');
var prop = [
imgMap(browser, 'name', ['ie', 'chrome', 'chromium', 'konqueror', 'safari', 'opera', 'firefox', ['fennec', 'firefox'], 'mozilla', 'midori', 'arora', 'camino', 'iceweasel', 'dolfin', 'rockmelt', 'flock']),
imgMap(engine, 'name', [['trident', 'ie'], ['webkit', 'safari'], ['khtml', 'konqueror'], ['presto', 'opera'], ['gecko', 'mozilla']]),
imgMap(os, 'name', ['meego', 'symbian', 'android', 'blackberry', 'bada', ['windows phone os', 'winphone'], 'windows', 'chromium', 'mac', 'freebsd', 'bsd', 'kubuntu', 'xubuntu', 'lubuntu', 'ubuntu', 'gentoo', 'fedora', 'mandriva', 'redhat', 'suse', 'debian', 'slackware', 'arch', 'linux', 'solaris', 'webos', 'ios', 'centos', 'pclinuxos', ['ios', 'mac'], ['rim', 'blackberry']]),
imgMap(device, 'type', [['undefined', 'pc'], ['tablet', 'ipad'], ['mobile', 'phone']]),
browser.name, engine.name, os.name, device.vendor,
browser.version, engine.version, os.version, device.model];
for(var i = 0; i < prop.length; i++){
fill(tbl[i], prop[i]);
}
pre.innerHTML = 'Result for <span style="color:green">' + (uastring ? uastring.replace(/</g,'&lt;') : navigator.userAgent + '</span><span> (your browser User-Agent string)') + ' :</span>';
}
fillTable();
sel.addEventListener('change', function(){
fillTable(sel.children[sel.selectedIndex].value);
});
txt.addEventListener('keydown', function(e){
if(e.keyCode == 13){
fillTable(this.value);
return false;
}
});
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-3767301-5']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>