import * as React from 'react'; import { useState, useEffect } from 'react'; import Bowser from 'bowser'; const Table = () => { const [batLevel, setBatLevel] = useState(''); const [batStatus, setBatStatus] = useState(''); useEffect(() => { navigator.getBattery().then((res) => { setBatLevel(`${Math.round(res.level * 100)}%`); setBatStatus(res.charging ? 'Charging' : 'Not charging'); }); }, []); const uaResult = Bowser.parse(navigator.userAgent); const browser = uaResult.browser.name; const browserVersion = uaResult.browser.version; const browserEngine = uaResult.engine.name; const os = `${uaResult.os.name} ${uaResult.os.versionName}`; const platform = uaResult.platform.type; const language = navigator.language; const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; const date = new Date(); const offset = date.getTimezoneOffset(); const cookies = navigator.cookieEnabled ? 'True' : 'False'; const java = navigator.javaEnabled() ? 'True' : 'False'; const dnt = navigator.doNotTrack ? 'True' : 'False'; const pluginsLength = navigator.plugins.length; let pluginList = ''; for (let i = 0; i < pluginsLength; i++) { if (i !== 0) pluginList += ', '; pluginList += navigator.plugins[i].name; } const plugins = pluginList; const screenSize = `${window.screen.width}x${window.screen.height}`; const color = window.screen.colorDepth; const memory = `${navigator.deviceMemory}GB`; const cores = navigator.hardwareConcurrency; const maxTouch = navigator.maxTouchPoints; const gl = document.createElement('canvas').getContext('webgl'); const ext = gl.getExtension('WEBGL_debug_renderer_info'); const vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL); const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL); return (
| Browser: | {browser} |
| Browser version: | {browserVersion} |
| Browser engine: | {browserEngine} |
| Operating system: | {os} |
| Language: | {language} |
| Timezone: | {timezone} |
| Timezone offset: | {offset} |
| Cookies enabled: | {cookies} |
| Java enabled: | {java} |
| DNT header enabled: | {dnt} |
| Plugins: | {plugins} |
| Platform: | {platform} |
| Screen resolution: | {screenSize} |
| Color Resolution: | {color} |
| Battery level: | {batLevel} |
| Battery status: | {batStatus} |
| Device memory: | {memory} |
| # of CPU cores: | {cores} |
| Max touchpoints: | {maxTouch} |
| WebGL vendor: | {vendor} |
| WebGL renderer: | {renderer} |