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 相关文章推荐
转一个日期输入控件,支持FF
Apr 27 Javascript
jQuery 版本的文本输入框检查器Input Check
Jul 09 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
js动态改变select选择变更option的index值示例
Jul 10 Javascript
jQuery级联操作绑定事件实例
Sep 02 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
前端设计师们最常用的JS代码汇总
Sep 25 Javascript
JavaScript实现图像模糊化的方法实例
Jan 15 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
vue用addRoutes实现动态路由的示例
Sep 15 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
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文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
Ajax基础知识详解
2017/02/17 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python list格式数据excel导出方法
2018/10/31 Python
python中append实例用法总结
2019/07/30 Python
python属于跨平台语言码
2020/06/09 Python
Python内置函数property()如何使用
2020/09/01 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android