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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
html+css+js实现xp window界面及有关功能
Mar 26 Javascript
js判断元素是否隐藏的方法
Jun 09 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
实现高性能javascript的注意事项
May 27 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 Javascript
jquery实现拖拽添加元素功能
Dec 01 jQuery
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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
php头像上传预览实例代码
2017/05/02 PHP
基于jquery & json的省市区联动代码
2012/06/26 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
使用python实现扫描端口示例
2014/03/29 Python
python实现进程间通信简单实例
2014/07/23 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python中引用与复制用法实例分析
2015/06/04 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python绘制简单折线图代码示例
2017/12/19 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
Python map及filter函数使用方法解析
2020/08/06 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
表扬稿范文
2015/01/17 职场文书
费城故事观后感
2015/06/10 职场文书