首页 > 代码库 > js实现pc和手机的判断

js实现pc和手机的判断

如果你不太会自适应,不能把pc端和手机端的网页都用同一个html页面,那就就必须写两个站(PC用www域名,手机用wap二级域名),一个PC,一个手机,那么如何做到识别用户是PC客服端还是手机客户端登陆的你网站的呢(并且能够实现在手机端输入www域名的时候不加载PC端的网页直接跳转到手机端的网页),这就需要js来对客户端的系统进行判断

 我这里有三段代码,都可以实现这个效果用法一样,优劣如何,就看你的需求如何

 不过,这里也有2个疑问点,请先看代码,我后面再解答

1.

 <script type=“text/javascript”>

function IsPC() {
    var userAgentInfo = navigator.userAgent;
    var Agents = ["Android", "iPhone",
                "SymbianOS", "Windows Phone",
                "iPad", "iPod"];
    var flag = true;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;
            break;
        }
    }
    return flag;
}
 </script>

2.

 <script type=“text/javascript”>

function browserRedirect() {
    var sUserAgent = navigator.userAgent.toLowerCase();
    var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
    var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
    var bIsMidp = sUserAgent.match(/midp/i) == "midp";
    var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
    var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
    var bIsAndroid = sUserAgent.match(/android/i) == "android";
    var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
    var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
    if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) ){
        window.location.href=http://www.mamicode.com/B页面;
    }
}
browserRedirect();
 </script>


3

 <script type=“text/javascript”>
   var system ={
   win : false,
   mac : false,
   xll : false
   };
 
//检测平台
   var p = navigator.platform;
   system.win = p.indexOf("Win") == 0;
   system.mac = p.indexOf("Mac") == 0;
   system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
   //跳转语句
   if(system.win||system.mac||system.xll){
   window.location.href=http://www.mamicode.com/"http://www.weishengyule.cn";
   }else{
   window.location.href=http://www.mamicode.com/"http://wap.weishengyule.cn";
   }
 </script>

疑问:js脚本都是在HTML页面加载完毕后才运行的,我这样做会不会出现在手机端输入PC端网页的域名会先完全加载完毕网页才跳转到手机端的网页

情景一:会出现完全加载后才跳转到手机端网页

原因:1.你没有把代码放在head的第一行    2.你用外部文件加载进来的

情景二:不会出现以上的情况,直接进入手机端网页

方法:直接用<script type="text/javascript">代码</script> 这样的方式,就不会出现问题

疑问二:谁优谁劣

个人喜欢第三个

原因:用变量的方式来给函数命名,理论上会直接加载他来运行【依据,我师傅说的】,个人感觉三个的效果都没差别