<script type="text/javascript">
var client = function(){
//呈现引擎
var engine = {
ie: 0,
gecko: 0,
webkit: 0,
khtml: 0,
opera: 0,
//完整的版本号
ver: null
};
// 浏览器
var browser = {
//主要浏览器
ie: 0,
firefox: 0,
konq: 0,
chrome: 0,
safari: 0,
// 具体版本号
ver: null
};
// 平台、设备和操作系统
var system = {
win: false,
mac: false,
x11: false,
// 移动设备
iphone: false,
ipod: false,
nokiaN: false,
winMobile: false,
macMobile: false,
// 游戏系统
wii: false,
ps: false
};
// 检测呈现引擎和浏览器
var ua = navigator.userAgent;
if(window.opera){
engine.ver = browser.ver = window.opera.version();
engine.opera = browser.opera = parseFloat(engine.ver);
} else if( /AppleWebKit\/(\S+)/.test(ua)){
engine.ver = RegExp["$1"];
engine.webkit = parseFloat(engine.ver);
// 确定是 Chrmoe 还是 Safari
if(/Chrmoe\/(\S+)/.test(ua)){
browser.ver = RegExp["$1"];
browser.chrome = parseFloat(browser.ver);
} else if(/Version\/(\S+)/.test(ua)){
browser.ver = RegExp["$1"];
browser.safri = parseFloat(browser.ver);
} else {
// 近似的确定版本号
var safariVersion = 1;
if(engine.webkit < 100){
safariVersion = 1;
} else if (engine.webkit < 312){
safariVersion = 1.2;
} else if (engine.webkit < 412){
safariVersion = 1.3;
} else {
safariVersion = 2;
}
browser.safari = browser.ver = safariVersion;
}
} else if (/KHTML\/(\S+)/.test(ua) || /Knoqueror\/([^;]+)/.test(ua)){
engine.ver = browser.ver = RegExp["$1"];
engine.khtml = browser.konq = parseFloat(engine.ver);
} else if (/rv:([^\)]+)\) Gecko\/\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 );
// 检测 windows操作系统
if (system.win){
if (/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){
if (RegExp["$1"] == "NT"){
switch (RegExp["$2"]){
case "5.0":
system.win = "2000";
brreak;
case "5.1":
system.win = "xp";
break;
case "6.0":
system.win = "Vista";
break;
case "6.1":
system.win = " Win7";
break;
default:
system.win = "NT";
break;
}
} else if (RegExp["$1"]){
system.wein = "ME";
} else {
system.win = RegExp["$1"];
}
}
}
// 移动设备
system.iphone = ua.indexOf("iPhone") > -1;
system.ipod = ua.indexOf("iPod") > -1;
system.nokiaN = ua.indexOf("NokiaN") > -1;
system.winMobile = (system.win == "CE");
system.macMobile = (system.iphone || system.ipod);
// 游戏系统
system.wii = ua.indexOf("Wii") > -1;
system.ps = /playstation/i.test(ua);
// 返回这些对象
return {
engine: engine,
browser: browser,
system: system
};
}();
if (client.browser.ie == "0"){
alert("请选择使用IE浏览器!");
} else {
alert("您现在使用的是IE浏览器");
}
</script>
分享到:
相关推荐
本文实例讲述了Javascript面向对象程序设计单例模式原理与实现方法。分享给大家供大家参考,具体如下: 1.单例模式概述 源自百度百科对于单例模式的定义: 单例模式的意思就是只有一个实例。单例模式确保某一个类...
本文实例讲述了JS多个表单数据提交下的...而源自于《JavaScript高级程序设计》一书的serialize()函数就是解决这个问题的最好办法,该函数如下: function serialize(form){ var parts = [], field = null, i,
本文介绍了如何利用 Prototype.js JavaScript 库在表单中结合 Ajax 代码来解决常见的用户体验问题。 简单的 Ajax 表单提交 基于XML的异步JavaScript,简称AJAX,是当前Web创新(称为Web2.0)中的一个王冠。...
ArchieJs简介Archiejs在nodejs代码... 此处详细阅读: : 项目背景ArchieJs源自Architech.js(由c9编写),并进行了一些改进。 它更简单,为新手用户提供友好的错误消息,并且不再是同构的nodejs框架。 ArchieJ和Archie
欢迎使用概念组件 :waving_hand: React Component Library的极简主义 先决条件 节点> = 10 ... App.js : import React , { useState } from 'react' import { TextBox } from 'notion-component
该程序旨在对古典和玫瑰花结中的图案设计进行实验。 它允许用户实时绘制和布置重复的图案。 此版本已从较早的简化原型进行了全面修订。 它在移动和桌面浏览器上都可以正常工作。 现在支持撤消/重做和一组基本的...
哈利奥斯在FHIR上使用SMART重新设计患者门户体验Halyos是由在哈佛医学院开发的可视化EHR Web应用程序,它补充了现有患者门户的功能。 Halyos旨在与现有的EHR系统集成,以帮助患者解释其健康数据。 Halyos应用程序...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
Buratino教学应用程式 该项目的目的是开发一个指令应用程序,该程序将由Buratino AB使用。 该应用程序将基于HTML,CSS和JS构建,并用作可安装的Progressive ... 该设计将源自Figma原型,并在开发过程中对设计进行更新。
设计该项目使在Holochain的分布式对等环境中构建协作应用程序变得容易。 Syn使用Holochain的基础结构来实现数据完整性和对等网络,以存储共享内容状态的常规“提交”,同时协调组成节点之间这些提交的大量增量。该...
开发周期周期预期时间软件设计3.31-4.2程序编码4。3-5月中程序测试&提交5月后旬特性界面对文字内容两端添加双波浪线~~可添加删除线效果。已完成事项多主题支持(深色模式适应,修正色更改)双栏初步瀑布流布局备忘...
铁砧计算器Minecraft Anvil XP计算器,用于组合工具一个简单的客户端Web应用程序,可帮助您计算Anvil工作所需的XP 砧力学源自特征所有可用的魔法工具(包括书籍!) 每种工具的兼容附魔及其可用级别列表不兼容的结界...
设计和实施自定义众包活动 注释文化遗产内容 语义标签,带有源自叙词表和词汇表的注释(例如Wikidata) 地理标记 颜色标签 验证注释(上投票,下投票) 通过Europeana Annotation API将注释发布到Europeana 显示...
Brasilino 4.0是一个源自的项目,最初由和 Things Hacker Team 创建。 在这个 4.0 版本中,我们使用演变为跨平台应用程序,我们将硬件和应用程序之间的通信语言从 Java 更改为 PHP 重要的 您可以在找到的原始设计
部署组和部署配置本身源自.appspec.yml的附加配置部分。 注意:本自述文件假设您熟悉。 设计目标 虽然这个 Action 主要是想避开我们,但它做出了一些基本假设: 对于您的 GitHub 存储库,已经设置了相应的 ...
[arra]stre “古典芭蕾与计算机科学相遇”,是一种数字舞蹈表演,其动作和概念源自计算机科学理论。 一场现场表演,加上一系列打破表演背后科学理论的研讨会(代码马戏团、圆形屋的音乐材料以及布莱顿数字节和 ...
该项目的灵感源自。 我认为这是一个可视化不同寻路算法工作方式的出色项目。 我想用真实的地图数据来介绍这个想法。 功能(当前不完整) 前端 在React应用程序中使用 。 地图将具有可移动的开始和结束标记。 搜索...
简短的创建一个功能来执行应用程序,使其遵循特定于基于对象的特定设计参数和功能资质认证所有svg图标均已在Creative Commons许可下使用,且均源自 。概念我的概念是“立即行动”,这是一个分层的待办事项,供人们...
这个原则是源自于我们对于数据库表的数据操作:(生)、select(见)、(变)和(灭),所以有时候CRUD也写作为RUDI,其中的I就是,这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如...