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遍历Json的两种数据结构的实现代码
Jan 19 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 Javascript
Vue 组件参数校验与非props特性的方法
Feb 12 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
浅谈JavaScript浅拷贝和深拷贝
Nov 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 无限极分类
2008/03/27 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
PHP安全配置详细说明
2011/09/26 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
Python二分法搜索算法实例分析
2015/05/11 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python 忽略warning的输出方法
2018/10/18 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
交通事故和解协议书
2014/09/25 职场文书
2014年质检工作总结
2014/11/26 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
python如何在word中存储本地图片
2021/04/07 Python
Python字符串的转义字符
2022/04/07 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server