From 8deca4d31520c64d4537380ce0658474a81555de Mon Sep 17 00:00:00 2001 From: GarboMuffin Date: Fri, 30 Dec 2022 13:00:28 -0600 Subject: [PATCH] New extension: Navigator Info --- extensions/navigator.js | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 extensions/navigator.js diff --git a/extensions/navigator.js b/extensions/navigator.js new file mode 100644 index 0000000000..e6fab6bea5 --- /dev/null +++ b/extensions/navigator.js @@ -0,0 +1,56 @@ +(function(Scratch) { + 'use strict'; + + class NavigatorInfo { + getInfo () { + return { + id: 'navigatorinfo', + name: 'Navigator Info', + blocks: [ + { + opcode: 'getOS', + blockType: Scratch.BlockType.REPORTER, + text: 'operating system' + }, + { + opcode: 'getBrowser', + blockType: Scratch.BlockType.REPORTER, + text: 'browser' + } + ] + } + } + + getOS () { + const userAgent = navigator.userAgent; + if (userAgent.includes('Windows')) { + return 'Windows'; + } else if (userAgent.includes('Android')) { + return 'Android'; + } else if (userAgent.includes('iPhone') || userAgent.includes('iPod') || userAgent.includes('iPad')) { + return 'iOS'; + } else if (userAgent.includes('Linux')) { + return 'Linux'; + } else if (userAgent.includes('CrOS')) { + return 'ChromeOS'; + } else if (userAgent.includes('Mac OS')) { + return 'macOS'; + } + return 'Other'; + } + + getBrowser () { + const userAgent = navigator.userAgent; + if (userAgent.includes('Chrome')) { + return 'Chrome'; + } else if (userAgent.includes('Firefox')) { + return 'Firefox'; + } else if (userAgent.includes('Safari')) { + return 'Safari'; + } + return 'Other'; + } + } + + Scratch.extensions.register(new NavigatorInfo()); +}(Scratch));