【问题标题】:How to detect Installed Browsers on a Mac Machine using Node.js?如何使用 Node.js 在 Mac 机器上检测已安装的浏览器?
【发布时间】:2020-07-17 22:03:06
【问题描述】:

需要一个 node-js 程序来检测本地机器上安装的浏览器(或应用程序)

【问题讨论】:

    标签: node.js browser-detection


    【解决方案1】:

    我偶然发现了这个问题几天,发现了以下链接:-

    1. Using Electron / Node.js, how can I detect all installed browsers on macOS? [需要时间;只给了我浏览器的名称,如果我需要路径和版本,标题在某种程度上是不正确的处理]
    2. https://github.com/litixsoft/karma-detect-browsers [似乎合法,无法使用]

    然后我想出了我自己的版本。这假定浏览器/应用程序安装在 /Application 目录中。

    var {
      spawn
    } = require('child_process');
    
    const fs = require("fs"); // Or `import fs from "fs";` with ESM
    
    
    function detectAllBrowsers(callback) {
      const browsers = [
        'Chromium',
        'Firefox',
        'Google Chrome',
        'Opera',
        'Safari',
        'TextEdit'
      ]
    
      var detectedBrowsers = [];
      var promises = [];
    
      browsers.forEach(function(browserName, index) {
        // /Applications/Google\ Chrome.app/Contents/Info.plist
        var path = '/Applications/' + browserName + '.app';
        var aPromise = new Promise(function(resolve, reject) {
          if (fs.existsSync(path)) {
            var aBrowser = {
              name: browserName,
              path: path
            }
    
            var sp = spawn('/usr/libexec/PlistBuddy', ['-c', 'print :CFBundleShortVersionString', path + '/Contents/Info.plist']);
            sp.stdout.setEncoding('utf8')
            sp.stdout.on('data', data => {
              aBrowser.version = data.trim();
            });
    
            sp.on('close', code => {
              detectedBrowsers.push(aBrowser);
              resolve('done');
            });
          } else {
            resolve('done');
          }
        });
    
        promises.push(aPromise);
      });
    
      Promise.all(promises).then(data => {
        callback(detectedBrowsers);
      });
    }
    
    detectAllBrowsers(function(detectedBrowsers) {
      console.log(detectedBrowsers);
    });
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2013-05-27
      • 2010-12-26
      • 2016-03-29
      • 2013-09-07
      • 2012-04-08
      相关资源
      最近更新 更多