链接:https://www.zhihu.com/question/20004700/answer/13678113

  • 第一步先在服务器端使用User Agent判断,先匹配出移动设备,这一步可以统计User Agent列表(可通过网站访问日志获取或者使用自己的设备收集),写出匹配设备的正则表达式(比如iPhone/Touch系列的匹配规则是/iPhone OS/i,如果要适配系统版本号,规则会更复杂),根据匹配结果做对应的网站版本输出。
    需要注意的是在智能手机在移动CMWAP接入方式下User-Agent会被网关过滤,所以在第一步服务器端判断UA后可以再在浏览器端对服务器端获取不到UA的访问设备使用Javascript进行二次判断。
  • 有三种方式,根据第一步的匹配结果 :
    a. 跳转到不同的网址,对三个网站进行分别维护 (例子:Facebook,国内各大门户)
    b. 同一个网址,针对不同设备使用不同的页面模板输出页面 (例子:deviantArt、 Tumblr)
    c. 只使用一套前端展示,对各种设备做集中适配(UI布局的自适应、前端技术的综合兼容,例子:http://cubiq.org)
    前两种方式后端维护成本较高,适合移动端和PC端产品内容形态不同的情况,第三种方式适合各平台内容一致的情况,后端维护成本较小,但是对前端技术和UI布局要求非常高。
  • 参见楼上的解决方案

前端判断用户请求是PC还是移动端的更多相关文章

  1. js如何判断用户是在pc端和还是移动端访问

    js如何判断用户是在pc端和还是移动端访问 来源:A5技术交流 作者:wofa 时间:2014-04-25收藏本页 最近一直在忙我们团队的项目“咖啡之翼”,在这个项目中,我们为移动平台提供了一个优秀的 ...

  2. js判断用户是在PC端或移动端访问

    js如何判断用户是在PC端和还是移动端访问.  最近一直在忙我们团队的项目“咖啡之翼”,在这个项目中,我们为移动平台提供了一个优秀的体验.伴随Android平台的红火发展.不仅带动国内智能手机行业,而 ...

  3. js判断用户的浏览器设备是移动端还是pc端

    最近做的一个网站页面中需要根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="te ...

  4. 关于实现判断用户是在PC端和还是移动端访问。

    最近一直在忙我们团队的项目“咖啡之翼”,在这个项目中,我们为移动平台提供了一个优秀的体验.伴随Android平台的红火发展.不仅带动国内智能手机行业,而且许多国内开发者也开始投身于Android移动终 ...

  5. js判断用户浏览器是PC还是手机,自动跳转

    browserRedirect(); function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase(); ...

  6. agent判断用户请求设备

  7. 如何使用fiddler抓取https请求(PC和移动端)

    最近做一个抓取移动端app接口,并执行评论,收藏的接口功能测试.怎么搞/(ㄒoㄒ)/~~ 按照老思路试一试,第一步还是要用fiddler来帮忙获取接口信息! 一.基本的抓取http请求设置: 1.cm ...

  8. js 判断用户是手机端还是电脑端访问

    通过userAgent 判断,网页可以直接使用 navigation对象 node端 可以通过请求头的 ctx.request.header['user-agent'] const browser = ...

  9. 如何使用js判断当前页面是pc还是移动端打开的

    1.利用了正则表达式和三目运算符,含义就是如果是移动端打开的话那就跳转到 "https:www.baidu.com/" ,如果不是就跳转到"http://new.baid ...

随机推荐

  1. Easyui 排序时 自动向后排传sort order 你妹真坑爹

    request 的时候 发现 sort 竟然是个数组!

  2. PDO LIMIT bug

    PDO存在一个LIMIT BUG(mysql) 需要指定数据类型,而且limit后面跟的2个参数必须是数值类型,不然的话获取不到数据 例1: $dsn = "mysql:host=127.0 ...

  3. ESP8266固件修改可以控制多个IO方法

    之前在论坛上找到了一个通过ESP8266可以控制GPIO0的固件和app,但是自己做的家庭影音灯光系统是需要控制多个IO从而控制STM32.通过观看大明的视频,了解了GPIO的控制方法. 在固件的ap ...

  4. SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)

    SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...

  5. 基于jQuery简单实用的Tabs选项卡插件

    jQuery庞大的插件库总是让人欢喜让人忧,如何从庞大的插件库里挑出适合自己的插件,总是让很多缺少经验的朋友头疼的事!今天为大家推荐几款简单实用的Tabs选项卡插件,推荐理由:简单易用灵活,样式美观, ...

  6. python学习第四天 --字符编码 与格式化及其字符串切片

    字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...

  7. django删除migrations

    先把migrations文件夹里面的数据删除. 删除数据库中关联的表 删除django_migrations里面关联的数据(因为在migrate的时候发现django_migrations表有相关数据 ...

  8. 递归:汉诺塔 - 零基础入门学习Python024

    递归:汉诺塔 让编程改变世界 Change the world by program 似乎谈到递归算法就要拿汉诺塔来举例,没办法,因为小甲鱼小时候太笨了,这个游戏老是玩不过关,好不容易在自学编程的时候 ...

  9. [TYVJ] P1025 单数?双数?

    单数?双数? 背景 Background USACO OCT09 1ST   描述 Description Bessie那惨无人道的二年级老师搞了一个有 N (1 <= N <= 100) ...

  10. android:layout_gravity="bottom"不起作用问题

    布局layout时, 发现设置了android:layout_gravity="bottom"后view并没有底对齐, 查了下, 原来如下: 对于 LinearLayout 当 a ...