对于 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";
}
}
我通过浏览 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
进行测试。 希望它在那里也能发挥作用。