4

我正在寻找一个可以检测访问者的浏览器是否启用了 SPDY 或 HTTP/2 的脚本。

这样的东西。

4

3 回答 3

4

从理论上讲,一旦nextHopProtocol进入ResourceTimingNavigationTiming,您应该能够检测到h2对根页面和其他资源的支持。

截至 2016-06-06,nextHopProtocol仅在 Firefox 的 ResourceTiming 实现中可用。它在它们的 NavigationTiming 中不可用,或者在 Chrome、FF 和 Safari 的 NavigationTiming 或 ResourceTiming 中不可用。

因此,对于今天的 Firefox 访问者,您可以查看是否nextHopProtocolh2HTML 页面位于同一域中的其他资源,并推断 HTML 页面也是h2如此。

于 2016-06-06T14:59:39.127 回答
0

现在是 2018 年 7 月,我看到 Firefox 和 Chrome 都通过 Navigation Timing 2 API 暴露了这一点:

performance.getEntriesByType('navigation')[0].nextHopProtocol

话虽如此,Navigation Timing Level 2 API 目前处于工作草案状态,因此对 nextHopProtocol(与 Level 2 API 一起引入)的支持将受到限制(不确定支持它的确切浏览器,因为 caniuse 目前不包括 Navigation Timing Level 2 API)。

于 2018-07-03T08:44:16.710 回答
0

我没有找到一个简单的测试。我认为一种解决方法是编写自己的测试:) 如果当前为您服务的浏览器是,您可以获得支持 HTTP/2 的浏览器列表(可以在 caniuse.com 上找到)然后遍历支持浏览器列表在列表中,那么您就可以开始了。

于 2016-03-23T06:34:26.007 回答