【问题标题】:How to validate if is a browser on the server side without window reference? [duplicate]如何验证服务器端的浏览器是否没有窗口参考? [复制]
【发布时间】:2020-06-08 19:42:07
【问题描述】:

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

var matches = window.Element.prototype.matches;

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

【问题讨论】:

  • 如果您需要知道window 是否存在,只需检查window。话虽如此,节点总是有一个名为 process 的全局变量,通常浏览器中不存在。

标签: javascript angular server-side-rendering angular-universal


【解决方案1】:

您可以使用isPlatformBrowser

component.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);
  }
}

您也可以尝试在server.ts 中使用domino,因为您无法控制浏览器元素的使用位置(例如,使用 3rs 派对库时)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多