1

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

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

苹果电视:

User-Agent: iTunes-AppleTV/4.1

谷歌电视:

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 开发者网络经常提到的这篇文章中,浏览器检测使用用户代理他们坚决不鼓励使用用户代理嗅探来提供特殊内容,建议人们宁愿使用特征检测。

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

4

2 回答 2

0

由于目前还没有识别浏览器的标准,因此用户代理被大量使用。如果你想避免这样做,你可以尝试像这样使用 navigator 对象:

var browser = navigator.appName;
var version = navigator.appVersion;
于 2013-04-09T15:00:01.093 回答
0

推荐的方法是使用用户代理。这个SO帖子中的第一个答案建议了一个很好的辅助方法。

在不使用用户代理字符串的情况下检测 Google TV

那里提供的小提琴在我测试过的 Vizio 盒子上运行良好。

var isGoogleTv = true; var allResults = ''; 函数 tryTest(name, testResult) { var result = (testResult ? 'succeeded' : 'failed'); 所有结果 += '' + 名称 + ''; isGoogleTv = isGoogleTv && testResult; } 函数 renderResults() { document.write('
    '); document.write(allResults); 文档.write('
'); if (isGoogleTv) { document.write('

检测到谷歌电视!

'); } else { 文档.write('

不是谷歌电视!

'); } } tryTest('是用户代理 GoogleTV', Boolean(navigator.userAgent.match(/(大屏幕)|GoogleTV/i))); tryTest('不是歌剧', Boolean(window.opera==undefined)); tryTest('不是 IE6+', Boolean(!(document.compatMode && document.all))); tryTest('不是平台Win', !Boolean(navigator.platform.match(/Win/))); tryTest('is vendor Google', Boolean(navigator.vendor.match(/Google/))); tryTest('不是 IE', false); 渲染结果();
于 2013-04-09T19:49:50.627 回答