10

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

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

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

我知道在 http 请求中发送了一个标头:“save-data: on”但是我不知道有什么方法可以从 javascript 中读取 http 请求标头。

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

感谢您的任何回答。

4

3 回答 3

6

检测chrome数据保护模式的Javascript方法

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}`)
 }
}

有关更多详细信息,请关注谷歌开发者博客文章使用 Save-Data 交付快速和轻量级的应用程序

于 2018-07-17T03:43:45.210 回答
0

save-data您可以通过查找请求标头来检测用户是否在 Chrome、Opera 或 Yandex 中打开了数据保存模式。Dean Hume 给出了一个如何检测数据保存模式的例子,虽然不幸的是他的例子使用了一个服务工作者,所以它在 Opera Mini 上不起作用。

Chrome Data Saver 使用代理,其他一些 Android 浏览器也使用代理,例如 Extreme 模式下的 Opera Mini 和 Speed Mode 下的 UC Browser Mini for Android。

您还应该能够查找X-Forwarded-For标头以检测是否正在使用Chrome 数据压缩代理。

于 2017-10-21T10:00:22.837 回答
0

我刚刚找到了一个小解决方案。PHP中的ENV变量有些东西。我通过一些随机调试发现 env 变量中有一个变量HTTP_SAVE_DATA。所以我的代码如下所示:

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

希望这对你有用 :)

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

于 2018-06-01T10:30:23.083 回答