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 相关文章推荐
Js 刷新框架页的代码
Apr 13 Javascript
jQuery getJSON 处理json数据的代码
Jul 26 Javascript
修复ie8&chrome下window的resize事件多次执行
Oct 20 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
Jan 28 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
微信小程序 底部导航栏目开发资料
Dec 05 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
微信小程序商品详情页的底部弹出框效果
Nov 16 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 Javascript
Ant-design-vue Table组件customRow属性的使用说明
Oct 28 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.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python3实现名片管理系统
2020/11/29 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
推荐信模板
2014/05/09 职场文书
群众路线对照检查材料
2014/09/22 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
体检通知范文
2015/04/21 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL
用Python生成会跳舞的美女
2022/01/18 Python
一级电子管军用接收机测评
2022/04/05 无线电