侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

判断所使用的浏览器不仅仅是电脑浏览器代码整理

人生(杂谈)  /  管理员 发布于 6年前   148

判断不仅包括电脑浏览器,还包括安卓、ios系统的手机以及平板电脑,游戏系统

复制代码 代码如下:

var client = function(){
//呈现引擎
var engine ={
ie : 0,
gecko : 0,
webkit : 0,
khtml : 0,
opera : 0,
ver : null
};
//浏览器
var browser = {
ie : 0,
firefox :0,
safari : 0,
konq :0,
opera : 0,
chrome : 0,
ver : null
};
var system ={
win :false,
max : false,
x11 : false,
//移动设备
iphone : false ,
ipod : false,
ipad : false,
ios : false,
android : false,
nokiaN : false,
winMoble : false,
//游戏系统
wii :false,
ps : false
};
var ua =navigator.userAgent;
//Opera 9以后出现了两种字符串代理的方式 一种方式就是将自身标识另外一个浏览器 另外一种方式就是标志自己为firefox或者IE
//在后面这种情况下 用户代理字符串实际上与其他浏览器返回的相同--既没有opera的字样,也不包含opera的版本信息
//因此判断浏览器先从opera开始
if(winddow.opera){
engine.ver = browser.ver = window.opera.version();
egine.opera = browser.opera = parseFloat(engine.ver);
//第二个检测WebKit 是因为WebKit的用户代理字Gecko"和"HTMKL"的字符串 所以如果首先检测他们都有错误的结论
}else if (/AppleWebKit\/(\S+)/.test(ua)){
engin.ver = RegExp["$1"];
engine.webkit = parseFloat(engine.ver);
//确定是chrome还是Safari
if(/Chrome\/(\S+)/.test(ua){
browser.ver = RegExp["$1"];
browser.chrome = parseFloat(brower.ver);
}else if(/Version\/(+\S)/.test(ua)){//safari 3.0后增加了Version属性
browser.ver = RegExp["$1"];
browser.safari = parseFloat(brower.ver);
}else{
var safariVersion = 1;
if(engine.webkit<100){
safariVersion = 1;
}else if(engine.ver<312){
safariVersion = 1.2;
}else if(engine.ver<412){
safariVersion = 1.3;
}else{
safariVersion = 2;
}
browser.safari = browser.ver = safariVersion;
}
}else if(/KHTML\/(\S+)/.test(ua)||/Konqueror\/([^;]+)/.test(ua)){//Linux下浏览器
engine.ver = browser.ver = RegExp["$1"];
engine.khtml = parseFloat(engine.ver);
}else if(/rv:([^\)]+\) Gocko\/\d{8}/.test(ua)){
engine.ver = RegExp["$1"];
engine.gecko = parseFloat(engine.ver);
//确定不是firefox
if(/Firefox\/(\S+)/.test(ua){
browser.ver = RegExp["$1"];
browser.firefox = parseFloat(browser.ver);
}
}else if (/MSIE ([^;]+)/.test(ua)){
engine.ver = browser.ver = RegExp["$1"];
engine.ie = browser.ie = parseFloat(engine.ver);
}
//检测浏览器
browser.ie =engine.ie;
browser.opera = engine.opera;
var p = navigator.platform;
system.win = p.indexOf("Win")==0;
system.mac = p.indexOf("Mac")==0;
system.x11 = (p=="x11")||p.indexOf("Linux")==0;
if(system.win){
if(/Win(?:dow)?([^do]{2}\s?(\d+\.\d+)?/.test(ua)){
if(RegExp["$1"]=="NT"){
switch(RegExp["$2"]){
case "5.0" :
system.win = "2000";
break;
case "5.1" :
system.win = "xp";
case "6.0" :
system.win = "Vista";
break;
case "6.1" :
system.win = "7";
break;
default :
system.win ="NT";
break;
}
}else if(RegExp["$1"]=="9x"){
system.win = "ME";
}else{
system.win = RegExp["$1"];
}
}
}
//移动设备
system.iphone = ua.indexOf("iPhone")>-1;
system.ipod = ua.indexOf("iPod")>-1;
system.ipad = ua.indexOf("iPad")>-1;
system.nokiaN = ua.indexOf("nokiaN")>-1;
//win Mobile
if(system.win == "CE"){
system.winMobile = system.win;
}else if(system.win = "Ph"){
if(/Windows Phone OS (\d+\_\d+)/.test(ua)){
system.win = "Phone";
system.winMobile parseFloat(RegExp["$1"]);
}
}
//检测ios版本
//
if(system.mac && ua.indexOf("Mobile")>-1){
if(/CPU (?:iPhone)?OS (\d+\_\d+)/.test(ua){
system.ios = parseFloat(RexExp.$1.replace("_","."));
}else {
system.ios = 2 ;//不能真正检查出来,所以猜测出来一个结果
}
}
//检查安卓版本
//
if(/Android (\d+/_\d+)/.test(ua)){
system.andriod = parseFloat(RegExp.$1);
}
//游戏系统
system.wii = us.indexOf("Wii")>-1;
system.ps = /playstation/i.test(ua);
//返回对象
return {
engine : engine,
browser : browser,
system : system
}
}


  • 上一条:
    Laravel 5框架学习之数据库迁移(Migrations)
    下一条:
    早上7点
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • zongscan.com祝各位老铁2023中秋国庆假期快乐!(0个评论)
    • 中国程序员“翻墙”为海外软件公司打工,105.8万工资被罚没!转知乎(0个评论)
    • 2023年了php凉了吗?并没有,PHP仍占据互联网半壁江山!(0个评论)
    • 微软Azure澳洲数据中心宕机超24小时!因值班工程师不足,无奈关服务器(0个评论)
    • 80后女程序员使用AI辅助转行小说家,成功实现副业转正(0个评论)
    • 近期文章
    • 在go语言中计算相对强弱指数(RSI)示例代码(0个评论)
    • 在go语言中实现查找相关系数示例代码(0个评论)
    • 使用 Unfinalize 删除供应商软件包中类和方法的 "final "关键字(0个评论)
    • zongscan.com祝各位老铁2023中秋国庆假期快乐!(0个评论)
    • 在go语言中如何解析WSDL并调用对应的第三方接口(0个评论)
    • 使用cert Manager申请免费证书流程步骤(0个评论)
    • 在Nuxt3中如何减少import model声明及初始化加载models快速开发秘诀(0个评论)
    • 适用于 Laravel 的表单请求测试程序包(0个评论)
    • Laravel 10.25版本发布(0个评论)
    • 在go语言中实现生成文件的校验和功能代码示例(0个评论)
    • 近期评论
    • 路人 在

      php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
    • 博主 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 @ mashrdn 多切换几个节点测试,免费ssr是没那么稳..
    • mashrdn 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 V2rayn免费节点添加上去了,youtobe无法打开网页,是怎么回事..
    • 张伟 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 3q!有用,不过免费节点隔天就要去git上复制新的导进去..
    • 博主 在

      科学上网翻墙访问Google , 上外网神器佛跳墙VPN(永久免费)使用流程步骤中评论 该篇教程已不能用了,告知大家,免的老有老铁问我!..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-06
    • 2020-08
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客