引子:

去年年底公司开发手机站平台,经历了前期的用户群、市场调查,产品需求分析,产品原型设计,ui前端到程序开发上线测试等等工作,终于上线。。。此处略去本人作为前端开发的心情。

应该说,我们的手机站平台还是个顽皮小孩子,还有许多需要去学习,去磨练。

我们手机站平台的设计初衷是对接我们已有的PC站平台,简单说就是原来我们所有的用户使用的是我们的PC站服务,现在可以得到一个网站数据与PC站 一样的手机站点。重点是老用户还不收钱,免费用。(PC端网站的客户 想想是不是有点儿小激动呢)上线一段时间,感觉很多客户还是蛮感兴趣的,都在自己的手机上安装了这个那个的二维码扫面软件,对着手机网站的二维码扫啊扫的。

话入正题:

废话不多说,很多客户慕名而来,原来不是我们做PC的客户买了我们的手机站服务,这就产生了从其PC站如何能够跳转到手机站的问题。

我想,通过javascript获取客户端的 navigator.userAgent 之后使用url跳转 是一个不错的方法。

走你-代码:

 var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i) ? true : false;
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i) ? true : false;
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPod/i) ? true : false;
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i) ? true : false;
},
Linux: function() {
return navigator.userAgent.match(/Linux/i) ? true : false;
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows() || isMobile.Linux());
}
};
setTimeout(function() {
if (isMobile.any()) {
var body = document.getElementsByTagName('body');
body[0].style.display='none';
location.href = "http://m.某某.com/";
}
}, 10);

简单分析:

一、在那些设备上需要跳转URL?

在XP,win7和mac下,一般不做手机站跳转的。

市面上的 Android 、BlackBerry 、iOS 、Windows mobile(phone) 、Linux等系统,为大家所常用的手机端操作系统。火狐的webOS,“远古时代”的诺基亚塞班等等,在国内外好像好没有市场了,不要去考虑。

统计来源:http://big5.askci.com/news/201401/24/249572145267.shtml

二、在页面跳转时,存在哪些问题?

1.原PC网站需要加载的资源可能很多,跳转URL之前PC站的页面可能已经呈现,跳转的效果太生硬

  解答:js获取终端的特性后,立即将body设置为隐藏

2.使用 window.onload 还是 setTimeout?

  解答:setTimeout是由我选择何时执行,而可恶的 window.onload需要我等所有的资源下载后去执行我的方法,故我推荐使用 setTimeout();

小结:

关于终端设备的判断,上面的代码很肤浅的做了很尴尬的 url 跳转,这是不得已的方法。若是服务器端根据客户端的请求头信息来判断设备特性,依此返回不同的资源是更好的选择。

随着移动端设备的发展,很多浏览器能够设置或者自定义修改 客户端的请求头信息,也是这段js可能面临的问题,有待更新呐!

以上是本人的拙见,望各位前辈勿见笑,求指导。

最新文章

  1. nodejs---修改文件名字
  2. 20145229&20145316《信息安全系统设计基础》实验一 开发环境的熟悉
  3. Knockoutjs的环境搭建教程
  4. HTML5的input color系统颜色选择器
  5. POJO类中的任何布尔类型的变量,都不要加is
  6. mobile 更改hosts
  7. OC中的内存问题
  8. iOS之UIAlertView的使用
  9. hibernate实体的几种状态:
  10. web配置nagios工具
  11. oracle多表查询
  12. 一个基于MINA框架应用的最简单例子
  13. dnc开源梦之队2018 开源项目精选集
  14. 我爱Java系列之《JavaEE学习笔记day12》---【缓冲流、转换流、序列/反序列化流、打印流】
  15. RecyclerViewSelectableAdapterDemo【封装BaseSelectableAdapter用于多选、单选,以及切换选中状态等功能】
  16. DevExpress 控件汉化方法
  17. 课程作业——Python基础之使用turtle库画出红旗
  18. JAVA 利用MyEclipse结合TestNG测试框架进行单元测试
  19. sql语句修改字段约束为不为空 并为其设置主键
  20. 如何把已有SQLSERVER数据库更名而且附加到数据库中?

热门文章

  1. Oracle数据库新装之后出现的监听程序无法正常启动和运行(Oracle-12514)
  2. 解决ssh连接linux系统特别慢的问题
  3. iOS 从零到一搭建组件化项目框架
  4. CSS、JavaScript学习过程
  5. 『ACM C++』 PTA 天梯赛练习集L1 | 040-41
  6. 创建<Bean>sessionFactory错误, init方法调用失败;嵌套异常是org.hibernate.exception。
  7. Mysql 之 MERGE 存储引擎
  8. laravel5.5源码阅读草稿——入口
  9. java的值传递机制
  10. django创建第一个子应用-3