Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Responsive design 在电视上用特征检测代替用户代理嗅探_Responsive Design_User Agent_Google Tv_Apple Tv - Fatal编程技术网

Responsive design 在电视上用特征检测代替用户代理嗅探

Responsive design 在电视上用特征检测代替用户代理嗅探,responsive-design,user-agent,google-tv,apple-tv,Responsive Design,User Agent,Google Tv,Apple Tv,我的团队正在考虑为电视开发,并考虑设计一个定制的10英尺用户界面,以便在电视机上以不同的方式呈现我们的内容 在这一点上,我看到它发生的唯一方式是通过嗅探用户代理来检测用户来自何处。我看到电视有一些用户代理,例如: 苹果电视: 用户代理:iTunes AppleTV/4.1 谷歌电视: Mozilla/5.0linux;谷歌电视x.x.x;LG谷歌电视构建/000000 AppleWebKit/534.24 KHTML,如Gecko Chrome/11.0.696.77 Safari/534.24

我的团队正在考虑为电视开发,并考虑设计一个定制的10英尺用户界面,以便在电视机上以不同的方式呈现我们的内容

在这一点上,我看到它发生的唯一方式是通过嗅探用户代理来检测用户来自何处。我看到电视有一些用户代理,例如:

苹果电视:

用户代理:iTunes AppleTV/4.1

谷歌电视:

Mozilla/5.0linux;谷歌电视x.x.x;LG谷歌电视构建/000000 AppleWebKit/534.24 KHTML,如Gecko Chrome/11.0.696.77 Safari/534.24

然而,我们不想使用用户代理,除非我们必须这样做

在Mozilla开发者网络经常提到的这篇文章中,他们坚决反对使用用户代理嗅探来提供特殊内容,建议用户使用功能检测


在电视浏览器/系统上是否有一个单一、稳定且受良好支持且易于检测的功能?如果是,会是什么?

因为目前还没有识别浏览器的标准,用户代理被大量使用。如果要避免这样做,可以尝试使用如下所示的navigator对象:

var browser = navigator.appName;
var version = navigator.appVersion;

建议使用用户代理。在这篇文章的第一个答案中,有一个很好的辅助方式

提供的小提琴在我测试的Vizio盒上运行良好

var isGoogleTv=true; var-allResults=; 函数tryTestname,testResult{ var result=testResult?'successed':'failed'; 所有结果+=+name+; isGoogleTv=isGoogleTv&&testResult; } 函数渲染结果{ 文件。书写; 文件。书面结果; 文件。书写; 如果是谷歌电视{ 文档。写“检测到谷歌电视!”; }否则{ 文档。写“不是谷歌电视!”; } } tryTest'is user agent GoogleTV',Booleannavigator.userAgent.match/Large Screen | GoogleTV/i; tryTest'not opera',Booleanwindow.opera==未定义; tryTest'不是IE6+',布尔值!document.compatMode&&document.all; tryTest‘不是平台赢家’!Booleannavigator.platform.match/Win/; tryTest'is vendor Google',Booleannavigator.vendor.match/Google/; tryTest‘不是IE’,是假的;
渲染结果;我真的很感激你的回答,我想很多人会觉得它有用,但我不能接受它是正确的,因为它涉及到用户代理,因为我最初要求对所有或大多数电视设备进行功能检测。这个解决方案不能作为问题的答案,但正如我已经提到的,我相信有人会发现它对他们的环境很有用……嗨,克里斯蒂,为你抽出时间回答我的问题干杯!很高兴发现你现在在谷歌电视工作,所以我会把你的建议牢记在心。我还不会接受你的答案,因为它没有回答主要问题,而且这种方法可能不如明确使用电视用户代理那么可靠,至少在这一点上不是这样。我相信其他人会发现这种方法很有用。干杯我使用用户代理来显示/隐藏特定设备上的内容,但听起来您想要的更像是使用库Modernizer和/或响应css框架Bootstrap/Foundation进行功能检测和媒体查询。通过这种方式,你可以在大屏幕上以不同的方式显示你的用户界面,而不管使用的是什么。例如,将电脑连接到大屏幕lcd上的人将获得与使用谷歌/苹果电视的人相同的视图