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中ajax使用error调试错误的方法
Feb 08 Javascript
javascript清空table表格的方法
May 14 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
一款简单的jQuery图片标注效果附源码下载
Mar 22 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 Javascript
React-Router如何进行页面权限管理的方法
Dec 06 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
微信小程序中使用echarts的实现方法
Apr 24 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 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利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
会议接待欢迎词
2014/01/12 职场文书
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
少儿节目主持串词
2014/04/02 职场文书
员工安全责任书范本
2014/07/24 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
谢师宴家长致辞
2015/07/27 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android