【问题标题】:Angular get browser name and versionAngular 获取浏览器名称和版本
【发布时间】:2021-02-04 02:18:37
【问题描述】:

在 Internet Explorer 和 Microsoft Edge 上运行时,我需要打印浏览器名称和版本。以下代码适用于 chrome,但不适用于 IE 和 Edge。那么有人可以解释下面的代码(这些字符是什么(?=/))/?\s *(\ d +)/ i),tem ..etc)。这段代码是别人写的。 比你

getBrowserVersion(){

      var userAgent= navigator.userAgent, tem, 

      matchTest= userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];

      if(/trident/i.test(matchTest[1])){

          tem=  /\brv[ :]+(\d+)/g.exec(userAgent) || [];

          return 'IE '+(tem[1] || '');

      }

      if(matchTest[1]=== 'Chrome'){

          tem= userAgent.match(/\b(OPR|Edge)\/(\d+)/);

          if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');

      }

      matchTest= matchTest[2]? [matchTest[1], matchTest[2]]: [navigator.appName, navigator.appVersion, '-?'];

      if((tem= userAgent.match(/version\/(\d+)/i))!= null) matchTest.splice(1, 1, tem[1]);

      return matchTest.join(' ');

}

【问题讨论】:

  • 这些字符正在创建regular expressions 以定义要在字符串中匹配的字符模式。

标签: javascript typescript user-agent


【解决方案1】:
const isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent)

我上面用过,请试一次

【讨论】:

  • 谢谢。它不适合我。你能告诉你是怎么添加的吗?
  • 只需在上面写在 Ngoninit 或构造函数中的 component.ts 文件上,然后控制台日志声明变量即 isIEOrEdge
  • 谢谢。似乎这不适用于 Angular 新版本。仍然对我不起作用
【解决方案2】:

你可以使用像“Bowser”这样的库:https://github.com/lancedikson/bowser

const browser = Bowser.getParser(window.navigator.userAgent);
console.log(browser.getBrowser());

// outputs
{
  name: "Internet Explorer"
  version: "11.0"
}

【讨论】:

  • 谢谢。我们如何将此库添加到角度?对不起,我不熟悉 git
  • 你只需要像在文档中那样使用它。 npm i bowserimport * as Bowser from "bowser"; 它与 TypeScript 完全兼容,并且“按定义”与 Angular 完全兼容。
  • 以上在控制台中工作。但它在前端显示 [object object].. 我们如何获取名称?
猜你喜欢
  • 2014-04-11
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
相关资源
最近更新 更多