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 相关文章推荐
jquery获取table中的某行全部td的内容方法
Mar 08 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
Sep 18 Javascript
CSS+jQuery实现的一个放大缩小动画效果
Sep 24 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
js实现无限级树形导航列表效果代码
Sep 23 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
解决vue cli使用typescript后打包巨慢的问题
Sep 30 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
小程序新版订阅消息模板消息
Dec 31 Javascript
vue实现员工信息录入功能
Jun 11 Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
python中的格式化输出用法总结
2016/07/28 Python
Python创建xml文件示例
2017/03/22 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
使用Pycharm分段执行代码
2020/04/15 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
如何用python免费看美剧
2020/08/11 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
农村党支部先进事迹
2014/01/14 职场文书
元旦晚会邀请函
2014/02/01 职场文书
商超业务员岗位职责
2014/03/12 职场文书
文化建设工作方案
2014/05/12 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
高中教师个人工作总结
2015/02/10 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
ubuntu下常用apt命令介绍
2022/06/05 Servers
2022年显卡天梯图(6月更新)
2022/06/17 数码科技