问题标签 [client-hints]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
617 浏览

http2 - 服务器推送 woff2 有意义吗?

我正在阅读很多关于 http2 的服务器推送的信息。还做了一些实验(在初学者的水平上)......

好吧,我的问题是:服务器推送 woff2 网络字体有意义吗?(因为不是每个浏览器都使用它们),并且,有没有办法推送正确的字体(如果还没有在缓存中)?

Zach 指出拥有快速的字体交付解决方案是多么重要,而 CSS-Tricks (Chris Coyer) 有一个很好的方法来完成缓存感知......

谢谢!大卫

0 投票
0 回答
798 浏览

reactjs - 服务器端的 DPR 和设备宽度检测(express 或 koa2,next.js)

我在 next.js 上使用adaptive.js - 反应项目,大量使用服务器端功能来提高第一个屏幕渲染速度。 带有px2rem的 Adaptive.js 可以使我们的团队编写 css 尺寸与 UED 团队的设计草案完全相同。当 Adaptive.js 初始化时,它需要设备宽度和 dpr 来缩放和设置整个项目 css 的基本字体大小。如果我们不传递正确的参数,服务器渲染的 css 会与客户端不同,有时缩放 2 倍或 3 倍,会导致屏幕闪烁和重新排列,这是不好的。

显然,我们无法直接在服务器端获取设备 dpr 或宽度。仅用户代理是不够的,每个设备型号 <=> 屏幕信息都没有地图。http 客户端提示似乎是一个完美的解决方案,明确要求浏览器提供所需的设备信息。但它仍处于草稿状态,有限的浏览器支持此功能。

0 投票
1 回答
44 浏览

cloudinary - cloudinary 可以知道前端的镜像容器大小并相应地传递镜像吗?

我知道我们可以通过在 URL 中指定通过 cloudinary 获得不同质量的图像,但是否可以自动完成?

cloudinary 可以自动知道前端图像容器的大小并相应地交付图像吗?

0 投票
1 回答
187 浏览

gwt - UserAgent 将被弃用 - 对 GXT 的影响

上周,我们收到了有关用户代理已计算其天数的信息。

谷歌宣布将摆脱 Chrome 中的用户代理字符串,Mozilla/Microsoft 支持这一想法。我想知道对于 GXT 特定代码会有什么影响,我们将如何构建,以及稍后加载脚本如何选择使用哪种排列。对此有什么想法吗?

https://groups.google.com/a/chromium.org/forum/m/#!msg/blink-dev/-2JIRNMWJ7s/yHe4tQNLCgAJ

0 投票
0 回答
54 浏览

javascript - 如何在不使用 `navigator` 和 `navigator.userAgent` 的情况下通过 javascript 检测浏览器版本?

tldr; 是否可以在不使用导航器字符串或客户端提示的情况下从前端获取浏览器版本?

因此,随着谷歌关于冻结字符串的公告navigator.userAgent,我的任务是通过一堆工作中的 javascript 库来替换浏览器嗅探(又名userAgent)。我知道,我知道,我们不应该userAgent首先使用它,因为它是一堆混乱和谎言,但我继承了这段代码而不是创建它。幸运的是,一堆用例都过时了(IE8-10、PhantomJS、Windows Phone),我可以完全删除它们。其他我可以弄清楚原始作者正在使用哪些特征/意图,我可以交换他们的条件以进行特征检测。

但是一些面向公众的逻辑正在navigator.userAgent用于确定浏览器版本,而这更难以替换,因为我在互联网上找到的与此搜索相关的所有内容都指向使用其中一个navigator属性。我不知道客户如何以及为什么关心“用户使用的 Firefox 版本”,我正在等待这个答案,但与此同时,我正在尝试看看是否有可以检测浏览器版本的解决方案在前端。我不会将答案仅限于 javascript,如果有 CSS/HTML/JS 组合,我完全赞成。

我也知道谷歌说我们应该使用客户端提示,但这需要访问超出我任务范围的服务器。

通过谷歌公告冻结计划:

  • UA 字符串的不同部分具有不同的兼容性含义。
  • 它的某些部分,例如浏览器版本和操作系统版本,可以在没有任何向后兼容性影响的情况下被冻结。过去有效的价值观将在未来继续有效。
  • 其他部分,例如模型(用于移动设备)和操作系统平台,可能会对将其 UI 定制到底层操作系统或针对其布局中非常具体的模型的站点产生影响。此类站点将需要迁移以使用 UA-CH。

如果我在这里正确阅读了第二个项目符号,那么到navigator2020 年 6 月上旬,字符串的版本部分将被冻结且不可靠。

同样,很清楚,我知道这应该由 feature detection 取代,但我无法完全控制我们的客户和用户,我只是看看是否有解决方案。我有一种感觉,很多人最终会尽快解决这个问题。

0 投票
1 回答
747 浏览

google-chrome - 哪些 Accept-CH 值等同于 User-Agent 来识别浏览器?

Chrome 计划在2020 年 6 月弃用和冻结其User-Agent标头。User -Agent在从日志中调试某些错误时很有用,因为许多浏览器根据版本的不同而有不同的怪癖。User-Agent已被弃用,取而代之的是Accept-CHSec-CH-UA-*

为了让浏览器响应以下用户代理信息,我需要在Accept-CH中输入什么值?随附的Sec-CH-UA-*标头是什么?

  • 浏览器名称和版本。
  • 操作系统名称和版本。
  • 架构(32/64 位 x86、ARM 等)。
  • 是移动的。
0 投票
2 回答
25413 浏览

google-chrome - 为什么 Chrome 使用 sec-ch-ua:"\"Not\\A;Brand";v="99"?

我知道使用户代理提示更加模棱两可,部分目的是使浏览器指纹识别更加困难。

我自己的(Windows 桌面)Chrome 发送标题:

我不明白的是:

  1. 为什么要专门使用字符串“Not A Brand”?还有其他人使用这个伪UA吗?这是某种玩笑吗?
  2. 为什么字符串里面有\"and ?\\A;我唯一的猜测是,这应该会以某种方式与解析器混淆(就像 CSS 中的反 IE hacks),但这似乎是一个相当奇怪的目的——而 IIRC\A是铃铛字符。
  3. 鉴于它还发送user-agent具有特定版本号的完整标头,这应该如何实现用户代理提示歧义?
  4. 在此期间:为什么 Chrome 的用户代理也声称是 Mozilla、AppleWebKit 和 Safari?不是,而且这个user-agent字符串明显是 Chrome 的。它是否具有来自其他浏览器的某种嵌入式组件?
0 投票
1 回答
232 浏览

c# - 如何在asp.net,c#中获取客户端设备信息

我在获取他们设备的客户端信息时卡住了,我不想向客户端显示我的服务器设备信息。

我希望任何访问我网站的人都能获得他们的手机/笔记本电脑名称、型号、操作系统版本和所有其他信息。

0 投票
3 回答
291 浏览

html - 可访问性:在小型设备上以模式显示内容,在大型设备上显示内联内容

我需要在小型设备上的模态/全屏面板中显示某些内容,由按钮触发。在大型设备上,始终显示相同的内容,然后隐藏触发器。

您如何处理可访问性?

目前,我有这个设置

最初,它o-panel通过 CSS 隐藏在小型设备上(在针对小型设备的媒体查询中)。当触发器被触发时,我设置aria-expanded为 true,active并向面板本身添加一个类,它o-panel通过 CSS 显示全屏。在大型设备上,我隐藏按钮并始终o-panel通过 CSS(在针对大型设备的媒体查询中)显示内容,内联,它位于 HTML 中。

这对可访问性有意义吗?我的面板没有说role="dialog",因为在大型设备上它只是内容,而不是对话框。我的按钮隐藏在这些大型设备上是否有问题?

我真的被困在我应该在这里做的事情上。如果我添加role="dialog"到我的 o-panel,我是否应该为大型设备删除这个属性,它实际上不是模态的?

o-panel或者我应该从我的 div 中复制/移动内容role="dialog",以防触发触发?我只是不想要相同内容的两个副本。

0 投票
0 回答
4048 浏览

google-chrome - 为什么 Chrome 会发送 sec-ch-ua 和 sec-ch-ua-mobile 请求标头,尽管“实验性 Web 平台功能”已禁用

我有 Chrome 的情况,经过测试87.0.4280.88,在某些情况下 Chrome 会发送sec-ch-uasec-ch-ua-mobile请求标头,尽管chrome://flags/#enable-experimental-web-platform-features设置为“禁用”。

例如:

发生这种情况时,摆脱这些标头的唯一方法是使用参数启动 Chrome --disable-features=UserAgentClientHint

有人对此有解释吗?据我了解,这些功能仍处于试验阶段,规范正在进行中(https://wicg.github.io/ua-client-hints/)。