Async JavaScript Client Detection (JSCD)

This script serves you with many informations about the client machine.

by ChristianL

JavaScript

/**
 * JavaScript Client Detection
 * (C) viazenetti GmbH (Christian Ludwig)
 */
function jscd(window) {
    {
        var unknown = '-';

        // screen
        var screenSize = '';
        if (screen.width) {
            width = (screen.width) ? screen.width : '';
            height = (screen.height) ? screen.height : '';
            screenSize += '' + width + " x " + height;
        }

        // browser
        var nVer = navigator.appVersion;
        var nAgt = navigator.userAgent;
        var browser = navigator.appName;
        var version = '' + parseFloat(nVer);
        var nameOffset, verOffset, ix;

		// Yandex Browser
		if ((verOffset = nAgt.indexOf('YaBrowser')) != -1) {
			browser = 'Yandex';
			version = nAgt.substring(verOffset + 10);
		}
		// Samsung Browser
		else if ((verOffset = nAgt.indexOf('SamsungBrowser')) != -1) {
			browser = 'Samsung';
			version = nAgt.substring(verOffset + 15);
		}
		// UC Browser
		else if ((verOffset = nAgt.indexOf('UCBrowser')) != -1) {
			browser = 'UC Browser';
			version = nAgt.substring(verOffset + 10);
		}
        // Opera Next
        else if ((verOffset = nAgt.indexOf('OPR')) != -1) {
            browser = 'Opera';
            version = nAgt.substring(verOffset + 4);
        }
        // Opera
        else if ((verOffset = nAgt.indexOf('Opera')) != -1) {
            browser = 'Opera';
            version = nAgt.substring(verOffset + 6);
            if ((verOffset = nAgt.indexOf('Version')) != -1) {
                version = nAgt.substring(verOffset + 8);
            }
        }
        // Legacy Edge
        else if ((verOffset = nAgt.indexOf('Edge')) != -1) {
            browser = 'Microsoft Legacy Edge';
            version = nAgt.substring(verOffset + 5);
        } 
        // Edge (Chromium)
        else if ((verOffset = nAgt.indexOf('Edg')) != -1) {
            browser = 'Microsoft Edge';
            version = nAgt.substring(verOffset + 4);
        }
        // MSIE
        else if ((verOffset =...