检测移动 chrome 的数据保存功能是否已从 javascript 启用

Detect if mobile chrome's Data saving feature is enable from javascript

在 android 设备上的移动设备 chrome 中,有一个名为 "Data saving" 的设置,可从“设置”>“数据保存”访问。

启用后,阅读媒体时的行为可能会略有不同,尤其是视频:在移动设备上禁止自动播放视频,除非视频已静音,但如果启用数据保存,则不再允许静音自动播放。

我需要一种方法来检测是否使用了数据保存,以便我可以更改我的视频播放器行为。

我知道在 http 请求中发送了 header:"save-data: on" 但我不知道如何从 javascript.

读取 http 请求 header

更多信息在这里: https://developer.chrome.com/multidevice/data-compression

感谢您的回答。

您可以通过查找 save-data 请求 header 来检测用户是否在 Chrome、Opera 或 Yandex 中打开了数据保存模式。 Dean Hume 给出了一个如何 detect data saving mode 的例子,但不幸的是他的例子使用了一个 service worker,所以它不能在 Opera Mini 上运行。

Chrome Data Saver 使用代理,其他一些 Android 浏览器也是如此,例如极限模式下的 Opera Mini 和速度模式下 Android 的 UC Browser Mini。

您还应该能够查找 X-Forwarded-For header 以检测是否正在使用 Chrome Data Compression Proxy

我刚刚找到了一个小的解决方案。 PHP 中的 ENV 变量有问题。我通过一些随机调试发现env变量中有一个变量HTTP_SAVE_DATA。所以我的代码看起来像这样:

<?php
if ($_ENV["HTTP_SAVE_DATA"] == "on"){
  echo "Datasaver on"; 
}else{
  echo "Datasaver off"; 
}
?>

希望对你有用:)

(你只需要将它回显到一个js变量中,你就可以通过js访问它)

Javascript 检测方式 chrome 省流量模式

if('connection' in navigator){
 if(navigator.connection.saveData){
  console.log(`Your save data mode is = ${navigator.connection.saveData}`)
 }else{
  console.log(`Your save data mode is = ${navigator.connection.saveData}`)
 }
}

有关详细信息,请关注 google 开发者博客 post Delivering fast and light applications with Save-Data