mirror of
https://github.com/karust/openserp.git
synced 2026-08-05 16:53:54 +08:00
67 lines
2.7 KiB
JavaScript
67 lines
2.7 KiB
JavaScript
async () => {
|
|
const workerData = await new Promise((resolve) => {
|
|
try {
|
|
const source = [
|
|
"self.onmessage = () => {",
|
|
"let webGLVendor = '';",
|
|
"let webGLRenderer = '';",
|
|
"try {",
|
|
"const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : null;",
|
|
"const gl = canvas ? (canvas.getContext('webgl') || canvas.getContext('experimental-webgl') || canvas.getContext('webgl2')) : null;",
|
|
"const debugInfo = gl && gl.getExtension('WEBGL_debug_renderer_info');",
|
|
"if (gl && debugInfo) {",
|
|
"webGLVendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) || '';",
|
|
"webGLRenderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || '';",
|
|
"}",
|
|
"} catch (_) {}",
|
|
"self.postMessage({",
|
|
"userAgent: self.navigator.userAgent || '',",
|
|
"platform: self.navigator.platform || '',",
|
|
"navigatorLanguages: Array.from(self.navigator.languages || []),",
|
|
"timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || '',",
|
|
"webGLVendor,",
|
|
"webGLRenderer,",
|
|
"});",
|
|
"};",
|
|
].join("\n");
|
|
const blob = new Blob([source], { type: "application/javascript" });
|
|
const url = URL.createObjectURL(blob);
|
|
const worker = new Worker(url);
|
|
worker.onmessage = (event) => {
|
|
resolve(event.data || {});
|
|
worker.terminate();
|
|
URL.revokeObjectURL(url);
|
|
};
|
|
worker.onerror = () => {
|
|
resolve({});
|
|
worker.terminate();
|
|
URL.revokeObjectURL(url);
|
|
};
|
|
worker.postMessage("run");
|
|
} catch (_) {
|
|
resolve({});
|
|
}
|
|
});
|
|
|
|
return {
|
|
userAgent: navigator.userAgent || "",
|
|
platform: navigator.userAgentData ? (navigator.userAgentData.platform || "") : "",
|
|
navigatorPlatform: navigator.platform || "",
|
|
navigatorLanguages: Array.from(navigator.languages || []),
|
|
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || "",
|
|
locale: Intl.DateTimeFormat().resolvedOptions().locale || "",
|
|
webdriverType: typeof navigator.webdriver,
|
|
webdriverOwnPropPresent: Object.getOwnPropertyNames(navigator).includes("webdriver"),
|
|
workerUserAgent: workerData.userAgent || "",
|
|
workerPlatform: workerData.platform || "",
|
|
workerNavigatorLangs: Array.from(workerData.navigatorLanguages || []),
|
|
workerTimezone: workerData.timezone || "",
|
|
workerWebGLVendor: workerData.webGLVendor || "",
|
|
workerWebGLRenderer: workerData.webGLRenderer || "",
|
|
innerHeight: window.innerHeight || 0,
|
|
outerHeight: window.outerHeight || 0,
|
|
screenHeight: window.screen ? (window.screen.height || 0) : 0,
|
|
screenAvailHeight: window.screen ? (window.screen.availHeight || 0) : 0,
|
|
};
|
|
}
|