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 相关文章推荐
Jquery截取中文字符串的实现代码
Dec 22 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
AngularJS Module方法详解
Dec 08 Javascript
Vue组件开发初探
Feb 14 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
js实现随机8位验证码
Jul 24 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 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+jQuery递归调用POST循环请求示例
2016/10/14 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
php二维码生成以及下载实现
2017/09/28 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
基于jquery的表格排序
2010/09/11 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python中的变量如何开辟内存
2018/06/26 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python多进程并行代码实例
2019/09/30 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
奥林匹克运动会口号
2014/06/19 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
导游词之镜泊湖
2019/12/09 职场文书