根据屏幕尺寸确定设备?

时间:2012-08-17 18:39:36

标签: javascript mobile

我想拥有一个主桌面网站,并能够重定向到移动和电视网站。我在网上找到了一些移动网站的代码,但我不确定如何为电视做这个。这是移动设备:

<script type="text/javascript">
if (screen.width <= 699) {
document.location = "index-mobile.html";
}
</script>

我对电视的看法是screen.width >= 1280(标准宽屏宽度为720p),但即便是最小的电脑屏幕也会包含在内。有没有办法在不使用用户代理的情况下做得好,因为我想要包括所有游戏机,机顶盒,智能电视等,而且我无法获得每个用户代理。我想过做screen.height == 720 or screen.height == 1080,但这会包括一些显示器并排除一些国际电视。

2 个答案:

答案 0 :(得分:3)

以下是您可以用来实现目标的方法:

http://modernizr.com/

Modernizr是一个功能检测库。与设备检测相反,实现特征检测通常是更好的做法。

由于存在大量的可能性,我建议不要使用屏幕高度和宽度。如果您重新考虑基于功能进行区分的方法,您可以依靠像Modernizr这样的层来处理复杂性。

示例

以下是使用媒体查询的Modernizr的示例:

if(Modernizr.mq("only handheld") === true){
  //Redirect to mobile site
}else if (Modernizr.mq("only tv") === true){
  //Redirect to TV
}else{
  //Anything else to the desktop
}

这是媒体查询参考。我不确定我使用的媒体查询的支持,但如果你看一下,你可能能够为你工作。

https://developer.mozilla.org/en-US/docs/CSS/Media_queries

答案 1 :(得分:0)

最近我不得不处理与移动设备上的屏幕尺寸有关的类似问题。 51Degrees.mobi有一个开源Java解决方案,可以处理屏幕大小检测。该API非常易于实施,并且有一个指南here。我基本上调整了他们的指南中的代码来处理屏幕尺寸:

public static void main(String[] args) {
    Provider p = null;
    try {
        p = Reader.create();
    } catch (BinaryException e) {
        e.printStackTrace();
    }

    BaseDeviceInfo b = p.getDeviceInfo("ENTER USERAGENT HERE");
    String width = b.getFirstPropertyValue("ScreenPixelsWidth");
    String height = b.getFirstPropertyValue("ScreenPixelsHeight");
}

这将获得您可以使用的x和y屏幕分辨率值。我相信他们的高级版可以检测电视/游戏机。希望这会有所帮助。