如何验证服务器端的浏览器是否没有窗口引用?

Car*_*cio 2 javascript server-side-rendering angular-universal angular

我正在开发将 SSR 与 Angular Universal 集成的 Angular 应用程序。在这个项目中,我们使用一些步进器的插件(bs-stepper)。问题是这个插件有一个多窗口引用,如下所示:

var matches = window.Element.prototype.matches;
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来验证它是否是浏览器,尝试了“检测”和“导航器”等多个选项。

Dav*_*vid 7

您可以使用isPlatformBrowser

组件.ts

import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';

//...
private isBrowser: boolean;

constructor( @Inject(PLATFORM_ID) platformId: Object) {
   this.isBrowser = isPlatformBrowser(platformId);
  }
}
Run Code Online (Sandbox Code Playgroud)

当您无法控制浏览器元素的使用位置时(例如,使用 3rs 方库时),您也可以尝试使用dominoin forserver.ts