功能检测而不是用户代理在电视上嗅探

时间:2013-04-09 12:19:03

标签: responsive-design user-agent google-tv apple-tv

我的团队正在考虑开发电视,并考虑设计一个量身定制的“10英尺UI”,以不同的方式在电视机上展示我们的内容。

此时我发现它的唯一方法是通过嗅探用户代理来检测用户来自哪里。我看到有些用户代理可用于电视,例如:

AppleTV的:

User-Agent: iTunes-AppleTV/4.1

Google TV:

Mozilla/5.0 (Linux; GoogleTV x.x.x; LG Google TV Build/000000) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24

但是,我们不想使用用户代理,除非我们必须

关于Mozilla开发者网络常常提到的文章,Browser detection using the user agent他们坚决不鼓励使用用户代理嗅探来提供特殊内容,建议人们更倾向于使用特征检测。

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

2 个答案:

答案 0 :(得分:0)

由于识别浏览器尚无标准,因此使用了很多用户代理。如果你想避免这样做,你可以尝试使用这样的导航器对象:

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

答案 1 :(得分:0)

推荐的方法是使用用户代理。这篇SO帖子的第一个答案提出了一个很好的辅助方式。

Detect Google TV without using user agent string

在我测试的Vizio盒子上提供的小提琴效果很好。

var isGoogleTv = true; var allResults =''; function tryTest(name,testResult){     var result =(testResult?'succeeded':'failed');     allResults + =''+ name +'';     isGoogleTv = isGoogleTv&&测试结果; } function renderResults(){     文件撰写( '
    ');     文件撰写(allResults);     文件撰写( '
');     if(isGoogleTv){         document.write('

检测到Google TV!

');     } else {         document.write('

不是GOOGLE TV!

');     } } tryTest('是用户代理GoogleTV',布尔(navigator.userAgent.match(/(大屏幕)| GoogleTV / i))); tryTest('不是opera',布尔值(window.opera == undefined)); tryTest('不是IE6 +',布尔值(!(document.compatMode&& document.all))); tryTest('不是平台Win',. Boolean(navigator.platform.match(/ Win /))); tryTest('是供应商Google',布尔(navigator.vendor.match(/ Google /))); tryTest('不是IE',false);     renderResults();