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 相关文章推荐
juqery 学习之四 筛选查找
Nov 30 Javascript
20个最新的jQuery插件
Jan 13 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
Js的Array数组对象详解
Feb 22 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
js省市区级联查询(插件版&amp;无插件版)
Mar 21 Javascript
boostrap模态框二次弹出清空原有内容的方法
Aug 10 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php xml实例 留言本
2009/03/20 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP使用递归生成文章树
2015/04/21 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
javascript实现密码验证
2015/11/10 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python collections模块使用方法详解
2019/08/28 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
简历中求职的个人自我评价
2013/12/03 职场文书
物流仓管员工作职责
2014/01/06 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
nginx配置之并发频次限制
2022/04/18 Servers
Nginx报404错误的详细解决方法
2022/07/23 Servers
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL