【问题标题】:Redirecting when not on a mobile device不在移动设备上时重定向
【发布时间】:2012-09-03 10:37:39
【问题描述】:

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

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

我见过这样的脚本:

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

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

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

【问题讨论】:

    标签: javascript redirect mobile


    【解决方案1】:

    这是我使用的一个不错的 sn-p:

    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';
    }
    

    【讨论】:

    • 非常感谢。将立即尝试:)
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢,但你是在向合唱团讲道。我不是真正的开发人员,甚至不是前端,我只是知道一点这个和那个。对于一个周末的测试活动,我们不会开发一些大而奇特的东西。我们正在为整个网站这样做,但距离实施还有很长的路要走。您在任何事情上都是绝对正确的 - 不幸的是,现实需要技巧和短期解决方案。
    【解决方案3】:
    // 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]'; } 
    

    【讨论】:

    • 这适用于所有移动浏览器吗?您的体验是什么(您在哪些移动平台上测试过)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多