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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
jquery 入门教程 [翻译] 推荐
Aug 17 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
浅析javascript的间隔调用和延时调用
Nov 12 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
浅析vue数据绑定
Jan 17 Javascript
微信小程序实现导航栏选项卡效果
Jun 19 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
js for终止循环 跳出多层循环
Oct 04 Javascript
如何通过setTimeout理解JS运行机制详解
Mar 23 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 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
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
python基于递归解决背包问题详解
2019/07/03 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
Python多进程编程常用方法解析
2020/03/26 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
领导离职感言
2015/08/03 职场文书
总结几个非常实用的Python库
2021/06/26 Python