Responsive design 在电视上用特征检测代替用户代理嗅探
我的团队正在考虑为电视开发,并考虑设计一个定制的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开发者网络经常提到的这篇文章中,他们坚决反对使用用户代理嗅探来提供特殊内容,建议用户使用功能检测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
在电视浏览器/系统上是否有一个单一、稳定且受良好支持且易于检测的功能?如果是,会是什么?因为目前还没有识别浏览器的标准,用户代理被大量使用。如果要避免这样做,可以尝试使用如下所示的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上的人将获得与使用谷歌/苹果电视的人相同的视图