Browser Information

by Lachlan Arthur

JavaScript

function htmlEnts(str) {
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}

navigator_json = '{';
navigator_array = [];
for (var i in navigator) {
    if (typeof navigator[i] == 'number' || typeof navigator[i] == 'string' || typeof navigator[i] == 'boolean') {
        navigator_array.push('"' + htmlEnts(i) + '":"' + htmlEnts(navigator[i]) + '"');
    }
}
navigator_json += navigator_array.join(',') + '}';

plugins_json = '{';
plugins_array = [];
for (var i = 0; i < navigator.plugins.length; i++) {
    plugins_array.push('"' + htmlEnts(navigator.plugins[i].name) + '":"' + htmlEnts(navigator.plugins[i].description) + '"');
}
plugins_json += plugins_array.join(',') + '}';

screen_json = '{';
screen_array = [];
for (var i in screen) {
    screen_array.push('"' + htmlEnts(i) + '":"' + htmlEnts(screen[i]) + '"');
}
screen_json += screen_array.join(',') + '}';

json = '{"navigator":' + navigator_json + ',"plugins":' + plugins_json + ',"screen":' + screen_json + '}';

console.log(JSON.parse(json));