js判断PC端与移动端跳转


Posted in Javascript onDecember 24, 2020

在网上看到很多这样类似的代码,但是有的很复杂,或者有的没有判断完全,上次经理去见完客户回来讲,使用苹果浏览打开pc端(pc已经做了识别跳转)会自动跳转到移动端的网页去,后来经测试才发现

document.writeln(" 是否为移动终端: "+browser.versions.mobile+"</br>");  //打印出来 true

所以在完整版的代码中 第一层if 判断一直是true

以上的原因是因为,网上流传的判断为: 

mobile: !! u.match(/AppleWebKit.*Mobile.*/) || !! u.match(/AppleWebKit/), //是否为移动终端

判断不完整才会造成这种原因。

下面三水点靠木小编为大家分享网站常用的判断代码

pc自动跳移动端

(function() {
      if (/Android|webOS|iPhone|iPad|Windows Phone|iPod|BlackBerry|SymbianOS|Nokia|Mobile|Opera Mini/i.test(navigator.userAgent)) {
        var siteName = window.location.pathname;
        if (url.indexOf("?pc") < 0) {
          try {
				if (typeof siteName !== "undefined") {
            	window.location.href = "https://m.3water.com" + siteName
          		} 
          } catch (e) {}
        }
      }
    })();

移动端自动跳pc端

;(function() {
  var reWriteUrl = function(url) {
    if (url) {
      var Splits = url.split("/"),
      siteName = window.location.pathname;
      if (typeof siteName !== "undefined") {
        return "https://3water.com" + siteName
      }
    }
  };
  if (!/Android|webOS|iPhone|iPad|Windows Phone|iPod|BlackBerry|SymbianOS|Nokia|Mobile|Opera Mini/i.test(navigator.userAgent)) {
    var url = window.location.href;
    var pathname = window.location.pathname;
    if (url.indexOf("?m") < 0) {
      try {
        window.location.href = reWriteUrl(url)
      } catch(e) {}
    }
  }
})();

正确的判断应该为:

mobile: !! u.match(/AppleWebKit.*Mobile.*/) || !! u.match(/AppleWebKit/) && u.indexOf('QIHU') && u.indexOf('QIHU') > -1 && u.indexOf('Chrome') < 0, //是否为移动终端

测试程序代码

var browser = {
 versions: function() {
 var u = navigator.userAgent;
 return {
  trident: u.indexOf('Trident') > -1,
  presto: u.indexOf('Presto') > -1,
  webKit: u.indexOf('AppleWebKit') > -1,
  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
  mobile: !! u.match(/AppleWebKit.*Mobile.*/) || !! u.match(/AppleWebKit/) && u.indexOf('QIHU') && u.indexOf('QIHU') > -1 && u.indexOf('Chrome') < 0,
  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
  iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
  iPad: u.indexOf('iPad') > -1,
  webApp: u.indexOf('Safari') == -1
 }
 } (),
 language:(navigator.browserLanguage || navigator.language).toLowerCase()
};
document.writeln("语言版本: "+browser.language+"</br>");
document.writeln(" 是否为移动终端: "+browser.versions.mobile+"</br>");
document.writeln(" ios终端: "+browser.versions.ios+"</br>");
document.writeln(" android终端: "+browser.versions.android+"</br>");
document.writeln(" 是否为iPhone: "+browser.versions.iPhone+"</br>");
document.writeln(" 是否iPad: "+browser.versions.iPad+"</br>");
document.writeln(navigator.userAgent+"</br>");

完整版,运用于项目代码

/*
*
* 判断PC端与WAP端
*/
var mobile_bs = {
 versions: function() {
 var u = navigator.userAgent;
 return {
  trident: u.indexOf('Trident') > -1, //IE内核
  presto: u.indexOf('Presto') > -1, //opera内核
  webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  mobile: !! u.match(/AppleWebKit.*Mobile.*/) || !! u.match(/AppleWebKit/) && u.indexOf('QIHU') && u.indexOf('QIHU') > -1 && u.indexOf('Chrome') < 0, //是否为移动终端
  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
  iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
  iPad: u.indexOf('iPad') > -1, //是否iPad
  webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
 }
 } ()
};
if (mobile_bs.versions.mobile) {
 if (mobile_bs.versions.android || mobile_bs.versions.iPhone || mobile_bs.versions.iPad || mobile_bs.versions.ios) {
 window.location.href = "移动端网址";
 }
};

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
node.js中的fs.fstat方法使用说明
Dec 15 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
基于jQuery实现的无刷新表格分页实例
Feb 17 Javascript
简单理解vue中Props属性
Oct 27 Javascript
基于 D3.js 绘制动态进度条的实例详解
Feb 26 Javascript
详解如何在你的Vue项目配置vux
Jun 04 Javascript
微信小程序实现多选删除列表数据功能示例
Jan 15 Javascript
微信小程序如何获取地址
Dec 24 Javascript
JS自定义对象创建与简单使用方法示例
Jan 15 Javascript
修改NPM全局模式的默认安装路径的方法
Dec 15 Javascript
jquery编写日期选择器
Mar 16 #Javascript
jquery事件与绑定事件
Mar 16 #Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 #Javascript
JSON与js对象序列化实例详解
Mar 16 #Javascript
JS对象的深度克隆方法示例
Mar 16 #Javascript
JS对象深度克隆实例分析
Mar 16 #Javascript
JS异步加载的三种实现方式
Mar 16 #Javascript
You might like
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
乔迁宴答谢词
2014/01/21 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
亲情作文之母爱
2019/09/25 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL