检测移动设备或平板电脑设备

时间:2013-02-18 12:17:25

标签: javascript wordpress device detection

我的目标是建立一个基于Wordpress的移动网站(适用于手机和平板电脑)和响应式桌面网站。我想要最简单的方法来实现万无一失的设备检测。

移动网站将拥有许多功能,这些功能只会真正使触控设备受益,并将为手机和平板电脑定制设计。桌面网站将完全不同(具有相同的页面,但具有额外的内容),并且将完全响应,以防任何设备滑过检测。

我有一个可以检测触摸设备并重定向到另一个页面的衬垫,但它似乎太简单了,不能成为一种简单的设备检测方法。这有多傻瓜?它适用于Windows和Android设备以及iOS吗?

这是我第一次做这样的网站而不确定这会有多有效:

<!-- Redirect to the mobile index page if we're on a touch device -->
<script>if( 'ontouchstart' in window ) window.location = 'mobile.html';</script>

3 个答案:

答案 0 :(得分:1)

您可以使用 mdetect (移动检测)库为您执行此操作。它以多种语言编写,可以检测Windows,Android,iOS等。请务必阅读文档。

请注意,JavaScript版本包含此警告:

// WARNING: 
//   These JavaScript-based device detection features may ONLY work 
//   for the newest generation of smartphones, such as the iPhone, 
//   Android and Palm WebOS devices.
//   These device detection features may NOT work for older smartphones 
//   which had poor support for JavaScript, including 
//   older BlackBerry, PalmOS, and Windows Mobile devices. 
//   Additionally, because JavaScript support is extremely poor among 
//   'feature phones', these features may not work at all on such devices.
//   For better results, consider using a server-based version of this code, 
//   such as Java, APS.NET, PHP, or Ruby.

答案 1 :(得分:1)

对于PHP上的移动检测,我一直使用$ _SERVER ['HTTP_USER_AGENT']变量。 我使用下面的功能可以非常精细地控制谁交付移动站点(我想支持的特定设备)。只需在数组中添加使用者(例如“Ipad”)即可添加其他设备。

function detectmobile(){
    $agent = $_SERVER['HTTP_USER_AGENT'];
    $useragents = array (
        "iPhone",
        "iPod",
        "Android",
        "blackberry9500",
        "blackberry9530",
        "blackberry9520",
        "blackberry9550",
        "blackberry9800",
        "webOS"
        );
        $result = false;
    foreach ( $useragents as $useragent ) {
    if (preg_match("/".$useragent."/i",$agent)){
            $result = true;
        }
    }
return $result;
}
if (detectmobile() == true) { wp_redirect('http://pageyouwwanttoredirectto'); }

用法:你可以将上面的代码添加到你的wordpress主题的functions.php文件中。

答案 2 :(得分:0)

对于几乎所有启用触控功能的设备,该代码都可以正常使用。