如何在 Firefox 中的 CSS 中检测 Linux/Windows 操作系统 userChrome.css & userContent.css?

问题描述 投票:0回答:1

对于 Firefox 的

userChrome.css
userContent.css
文件(因此 no JavaScript 可用),我们如何检测 Firefox 网络浏览器正在哪个操作系统上运行? 至少,我们需要区分Linux和Windows;还能识别 macOS 是一个额外的好处,但不是必需的。

我认为有一种方法可以使用 @media requests 来完成此任务,但我没有看到使用 @media at-rules 来完成工作的记录方法。

请注意,这只需要在 Firefox 中工作;不需要跨浏览器功能(因此,回答没有办法的跨浏览器问题不适用,因为也许现在有一种方法可以专门在 Firefox 中实现此目的)。

顺便说一句,几年前,您可以使用以下 CSS 代码来区分 Firefox 中的 Linux 和 Windows,但它不再有效:

/* detect Linux */
@media (min-resolution: 1dpcm) {
  *::after {
    content: "Linux";
  }
}

/* detect Windows */
@media (min-resolution: 0.001dpcm) {
  *::after {
    content: "Windows";
  }
}
css user-interface firefox operating-system customization
1个回答
0
投票

我通过浏览 Firefox 的源代码找到了答案(对于完全开源项目来说是一个大大的“是”!)。

这是我发现的一个例子:
https://searchfox.org/mozilla-esr128/source/toolkit/themes/shared/menu-shared.css

这是 Mozilla 代码示例的片段:

 @media (-moz-platform: linux) {
    margin-block: 0;
    margin-inline: 6px 0;
  }

  @media (-moz-platform: macos) {
    margin-inline: 22px -3px;
  }

  @media (-moz-platform: windows) {
    margin-inline-end: 1em;
  }

如您所见,在 Firefox 中,我们可以使用

@media (-moz-platform: [os_name])
at 规则将特定的 CSS 代码定位到不同的操作系统。 请注意,出于安全/隐私原因,此功能仅在某些上下文中可用,但这些上下文包括
userChrome.css
,所以这是完美的。

我也计划在

userContent.css
进行测试。 希望它在那里也能发挥作用。

© www.soinside.com 2019 - 2024. All rights reserved.