2014-10-30 167 views
2

这是我的基于屏幕尺寸检测移动显示屏的片段。您可以通过在URL中添加一个forceDesktop参数来强制网站保持桌面模式。检测移动设备和重定向的最佳方法

我是新来的jquery,所以如果你有建议,请评论。

现金去brandonjp: How can I get query string values in JavaScript?

 <script> 
      $.urlParam = function(name, url) { 
       if (!url) { 
        url = window.location.href; 
       } 
       var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(url); 
       if (!results) { 
        return undefined; 
       } 
       return results[1] || undefined; 
      } 
      window.onload = function() { 
       var forceDesktop = $.urlParam('forceDesktop'); 
       if (!forceDesktop) { 
        if ($(window).width() < 639) { 
         var url = "http://m.mysite.com/";  
         $(location).attr('href',url); 
        } 
       } 
      }; 
     </script> 
+1

我知道这个帖子是超过2岁,但它应该是在[代码审查(http://codereview.stackexchange.com),而不是在这里... – Ortund 2017-02-07 10:04:43

回答

0

其实,我认为,从窗口宽度检测手机是很重要的。

所以这里是我使用的方式。

function detectmob() { 
    if(window.innerWidth <= 800 || window.innerHeight <= 600) { 
    return true; 
    } else { 
    return false; 
    } 
} 

if (detectmob()){ 
top.location.href="mobile"; 
} 
+0

我认为你需要'OR'而不是'AND',因为很多手机屏幕的高度是720或800px,而只有480px的宽度。 – pawel 2014-10-30 10:06:16

+0

是的,你确实让我们编辑答案。 – 2014-10-30 10:15:31

2

最好的办法是

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))  
{ 
    var url = "http://m.mysite.com/";  
    $(location).attr('href',url); 

} 

更多Here

+0

为什么jQuery的并不仅仅是'位置.replace( “http://m.mysite.com/”)'? – pawel 2014-10-30 09:56:17

+0

是的,它也是有效的'location.replace(“http://m.mysite.com/”)'但是,如果他想使用url用于其他目的,那么他可以缓存在'var'中。 – 2014-10-30 10:00:59

1

如果你要使用某种形式的浏览器嗅探,而不是功能检测通过类似Modernizr,最好的办法是从http://detectmobilebrowsers.com/抓住一些脚本,而不是粘贴在这里使用本土的/不完整的脚本那里。

2

为什么不是这个?

if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { 
    window.location = "http://m.mysite.tld/"; 
}