JS跳转手机站url的若干注意事项


Posted in Javascript onOctober 18, 2017

引子:

去年年底公司开发手机站平台,经历了前期的用户群、市场调查,产品需求分析,产品原型设计,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,“远古时代”的诺基亚塞班等等,在国内外好像好没有市场了,不要去考虑。

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

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

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

2.使用 window.onload 还是 setTimeout?

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

小结:

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

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

Javascript 相关文章推荐
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
详解在Angular4中使用ng2-baidu-map的方法
Jun 19 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 #Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
Oct 18 #Javascript
浅谈Node异步编程的机制
Oct 18 #Javascript
js实现随机点名系统(实例讲解)
Oct 18 #Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 #Javascript
详谈commonjs模块与es6模块的区别
Oct 18 #Javascript
从源码看angular/material2 中 dialog模块的实现方法
Oct 18 #Javascript
You might like
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
做web开发 先学JavaScript
2014/12/12 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
django迁移数据库错误问题解决
2019/07/29 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
详解python中的异常和文件读写
2021/01/03 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
婴儿地球:Baby Earth
2018/12/25 全球购物
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
汽车专业求职信
2014/06/05 职场文书
环保标语大全
2014/06/12 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
初中信息技术教学反思
2016/02/16 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python