1

我正在构建一个带有联系表单和收据页面的移动优化页面。在我们的 CMS 中,我们有一个具有相同内容的“桌面”页面,但我无法根据 CSS、重定向或其他任何方式编辑桌面页面。

移动页面将用于仅限移动设备的广告系列。但是,我想确保,如果有人最终从桌面或平板电脑进入页面,他们将被重定向到桌面版本。

我见过这样的脚本:

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

但是,嘿,现在手机的分辨率要高得多,所以反向“如果 >=699 则重定向到桌面站点”,可能对我不起作用,对吗?三星 Galaxy s 3 几乎具有桌面分辨率...使用媒体查询并不是一个真正的选择,因为这是两个独立的站点(由于旧的、僵化的 CMS)。那么我如何重定向非手机和平板电脑用户,而任何手机上的任何人都留在移动页面页面上。

请注意 - 我们的服务器不运行 PHP,我无法更改服务器端文件。我认为我需要一些类似于 JavaScript 的东西。

4

3 回答 3

2

这是我使用的一个不错的片段:

var isMobile = {
    Android: function() {
        return navigator.userAgent.match(/Android/i) ? true : false;
    },
    BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i) ? true : false;
    },
    iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false;
    },
    Windows: function() {
        return navigator.userAgent.match(/IEMobile/i) ? true : false;
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());
    }
};

if (isMobile.any()) {
    window.location = 'http://m.example.org';
}
于 2012-09-03T10:39:11.273 回答
0

我从来没有真正理解为什么这么多人在寻找检测“移动设备”。作为前端开发人员,您实际上不应该像寻找浏览器供应商那样关注所谓的移动设备,也就是说,根本不应该

为什么不检查功能呢?创建一个动态的、渐进式的增强网络应用程序,以适应其当前环境。这是否意味着触摸事件或标准事件、屏幕分辨率或其他东西都没关系。

但是,如果您坚持检查浏览器或设备,您最好的办法仍然是userAgent位于navigator对象中的字符串,请参阅@MihaiIorga 的答案。

但是,我们真的应该尽量避免在浏览器和/或设备的完全不同的应用程序/项目中出现这些“分离”。如果已经有一个或多或少的“巨大”应用程序或站点需要在很短的时间内在另一台设备上进行探测,我理解这一点,但从长远来看,这种做法不会有多大好处。未来将发布更多设备/浏览器(版本)/{我想不到的东西}。

于 2012-09-03T10:42:35.677 回答
0
// To Check if Mobile browser,then redirect to mobile version website otherwise open web url.
    //alert(navigator.userAgent); 
        // userAgent gives all info related to browser,os,device info

     var index = navigator.appVersion.indexOf("Mobile");   

    if (index>0) 
    { window.location.href='[mobile page url]'; } 
于 2012-09-03T10:50:54.983 回答