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代码
Jan 13 Javascript
jQuery实现带动画效果的二级下拉导航方法
Mar 11 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 Javascript
微信小程序 slider的简单实例
Apr 19 Javascript
详解webpack与SPA实践之开发环境搭建
Dec 18 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
May 26 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
ES5和ES6中类的区别总结
Dec 21 Javascript
AJAX实现省市县三级联动效果
Oct 16 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
js中的getAttribute方法使用示例
2014/08/01 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
使用python turtle画高达
2020/01/19 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python实现126邮箱发送邮件
2020/05/20 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
岗位职责定义及内容
2013/11/08 职场文书
廉洁校园实施方案
2014/05/25 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技