您好,欢迎光临郑州做网站网!
全国咨询热线:18539972853
首页/常见问题/文章详情

在网页中如何判断是否是移动端在访问?

发表时间:2019-09-23 09:35:01    浏览次数:298    来源:做网站

近几年,智能手机的普及,让WEB应用也变得更加多样化,以网站为例,前几年基本就是一个PC端的网页布局,上网只能通过台式电脑或笔记本操作,有了智能手机和4G网络人们的使用习惯开始发生了变化,用手机随时随地就可以访问,只要有网的地方就可以浏览。如果,用手机看传统的网站,你可能会发现体验度并不好,尤其是文字特别的小,要么就是图片变形或页面被撑开,需要手动放大或缩小才能看,而且效果也不好。这是因为,手机上看的PC站界面本来就不是为了适配手机,要想完美体检就必须再做一套移动端的手机访问界面。
那么,问题来了,同一个网站如何在电脑访问时显示PC端的页面,手机访问时显示移动端的页面呢。其实,也很简单,加入一个代码判断即可。如果程序检测到移动端的相关信息就自动切换到移动端对应的页面,而不是移动端就默认显示电脑PC端对应的页面。

移动端自动切换

  1. 可以使用JS脚本来判断是否移动端:

  2. <script>
        var is_mobile 
    =navigator.userAgent.toLowerCase().match(/(phone|pad|pod|ipod|iphone|ios|android|mobile|mqqbrowser|iemobile|juc|fennec|wosbrowser|browserng|webos|symbian|windows
     phone|coolpad|mmp|smartphone|midp|wap|xoom|j2me|blackberry|wince)/i) !=
     null;    //进行userAgent匹配
        if(is_mobile){
            window.location.href = "/m";
        }
    </script>
  3. 可以直接在代码里写自定义函数,以PHP代码为例:

//判断是否手机访问
function isMobile()
{ 
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
    {
        return true;
    } 
    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER['HTTP_VIA']))
    { 
        // 找不到为flase,否则为true
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    } 
    // 脑残法,判断手机发送的客户端标志,兼容性有待提高
    if (isset ($_SERVER['HTTP_USER_AGENT']))
    {
        $clientkeywords = array ('nokia',
            'sony',
            'ericsson',
            'mot',
            'samsung',
            'htc',
            'sgh',
            'lg',
            'sharp',
            'sie-',
            'philips',
            'panasonic',
            'alcatel',
            'lenovo',
            'iphone',
            'ipod',
            'blackberry',
            'meizu',
            'android',
            'netfront',
            'symbian',
            'ucweb',
            'windowsce',
            'palm',
            'operamini',
            'operamobi',
            'openwave',
            'nexusone',
            'cldc',
            'midp',
            'wap',
            'mobile'
            ); 
        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
        {
            return true;
        } 
    } 
    // 协议法,因为有可能不准确,放到最后判断
    if (isset ($_SERVER['HTTP_ACCEPT']))
    { 
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
        {
            return true;
        } 
    } 
    return false;
}


本文地址:https://www.up7.com.cn/news/244.html