在Android设备上的移动设备上,有一个名为“数据保存”的设置,可从设置>访问数据保存。
启用后,在阅读媒体时行为可能略有不同,特别是视频:禁止移动自动播放视频,除非视频已静音但如果启用了数据保存,则不再允许静音自动播放。
我需要一种方法来检测是否使用了数据保存,这样我就可以改变我的视频播放器行为。
我知道在http请求中发送了一个标头:“save-data:on” 但我不知道从javascript读取http请求标头的任何方法。
更多信息: https://developer.chrome.com/multidevice/data-compression
感谢您的回答。
答案 0 :(得分:2)
用于检测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}`)
}
}
有关更多详细信息,请关注Google开发人员博客文章,Delivering fast and light applications with Save-Data
答案 1 :(得分:0)
我刚刚找到了一点解决方案。在PHP中有一些ENV变量。我通过一些随机调试发现env变量中有一个变量 HTTP_SAVE_DATA 。所以我的代码看起来像这样:
<?php
if ($_ENV["HTTP_SAVE_DATA"] == "on"){
echo "Datasaver on";
}else{
echo "Datasaver off";
}
?>
希望它适合你:)
(你只需要将它回显到一个js变量中,你可以通过js访问它)
答案 2 :(得分:-1)
我已使用此PHP检查data-saver
是否已启用
/*
* This is PHP Code
* will not work on clicking "Run Code Snippet"
* Host this code on php server as .php file
*/
<?php
header('Content-Type: application/json');
$headers = getallheaders();
$datasaver = false;
foreach($headers as $key=>$val){
if(strtolower($key) == 'save-data' && $val == 'on'){
$datasaver = true;
}
}
$status = array('data-saver'=>$datasaver);
echo json_encode($status);
?>
当data-saver
打开时,网站的行为会有所不同,并且无法通过javascript检查以确定这一点。现在,我已经使用过PHP,但是将来我们需要通过javascript检查它,如果我在javascript中转换它,我会更新这个帖子。
答案 3 :(得分:-1)
您可以通过查找save-data
请求标头来检测用户是否已在Chrome,Opera或Yandex中启用了数据保存模式。 Dean Hume举了一个如何detect data saving mode的例子,虽然不幸的是他的例子使用了服务工作者,所以它不能在Opera Mini上工作。
Chrome Data Saver使用代理,其他Android浏览器也是如此,例如极端模式下的Opera Mini和速度模式下的Android版UC浏览器迷你版。
您还应该能够查找X-Forwarded-For
标头,以检测是否正在使用Chrome Data Compression Proxy。