2014-10-30 168 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/"; 
}