javascript - 使用 javascript 检测手机/平板电脑/网络客户端

标签 javascript browser-detection device-detection

我正在尝试检测最终用户是在使用手机、平板电脑还是个人电脑

我已经谷歌了一段时间,显然没有简单的解决方案。

嗯,我想我不应该使用 Resolution,因为现在有些平板电脑的分辨率非常好。

我不应该依赖方向,因为 windows8 笔记本电脑可以像平板电脑一样旋转。 (响应式设计对我目前的项目来说太难了)

我一直在尝试使用 UserAgent(认为它也有缺点),但无法正常工作,下面是我用来区分手机/平板电脑和 PC 的不同在线版本的结合,它们只是这样做不工作,我不知道为什么

var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','iemobile','phone','mobile'];
                for(i in agents) {
                    if(navigator.userAgent.toLowerCase().match('/'+agents[i]+'/i')) {
                        return true;
                    }
                }


if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
                return true;
            }

 if( navigator.userAgent.match(/Android/i)
                 || navigator.userAgent.match(/webOS/i)
                 || navigator.userAgent.match(/iPhone/i)
                 || navigator.userAgent.match(/iPad/i)
                 || navigator.userAgent.match(/iPod/i)
                 || navigator.userAgent.match(/BlackBerry/i)
                 || navigator.userAgent.match(/Windows Phone/i)
                 || navigator.userAgent.match(/bada/i)
                 || navigator.userAgent.match(/Bada/i)
                 ){
                return true;
            }

最佳答案

是的,您不应该依赖分辨率或方向。但是基于 em 的媒体查询呢?

为了使用 javascript 读取媒体查询的结果,您可以尝试将媒体查询添加到您的 css 以将不可见的内容添加到您的页面:

@media all and (max-width: 45em) {
    body:after {
        content: 'smallscreen';
        display: none;
    }
}

然后通过javascript读取内容:

var size = window.getComputedStyle(document.body,':after').getPropertyValue('content');

然后确定要加载的内容:

if (size.indexOf('smallscreen') !=-1) {
    // Load some content for smaller screens.
}

关于javascript - 使用 javascript 检测手机/平板电脑/网络客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100234/

相关文章:

javascript - 防止在 angularjs 中单击按钮两次

javascript - $.post 后面跟着 form.submit 似乎取消了 $.post

javascript - 在指向图像文件的 window.location 上调用另存为对话框

ionic-framework - 如何使用ionic.Platform

php - 在 javascript 中使用来自 Controller (或 View )的 php 数据

浏览器检测

browser - 为什么用户代理/浏览器会撒谎

javascript - 对于 IE6 浏览器检测,某些非 IE 浏览器显示为 true

javascript - 哪种技术可以隐藏内容较多的右栏?

mobile - 使用 Modernizr 测试平板电脑和移动设备 - 征求意见