1 userAgent:包含浏览器名称和版本号的字符串
 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//编写一段代码能够区分浏览器的主流和区分
document.write("<h1>"+navigator.userAgent+"</h1>");
var browser="unknown";
var ua=navigator.userAgent;
//如果ua中包含MSIE
if(ua.indexOf("MSIE")!=-1){
browser="IE";//browser赋值为"IE";
}else if(ua.indexOf("Firefox")!=-1){//否则,如果ua中包含Firefox
browser="Firefox"; //browser赋值为:Firefox
}
else if(ua.indexOf("OPR")!=-1){//否则,如果ua中包含OPR
browser="Opera"; //browser赋值为:"Opera"
}
else if(ua.indexOf("Chrome")!=-1){//否则,如果如果ua中包含Chrome
browser="Chrome"; //browser赋值为"Chrome"
}
else if(ua.indexOf("Safari")!=-1){ //否则,如果ua中包含Safari
browser="Safari";//browser赋值为"Safari"
}
else if(ua.indexOf("Trident")!=-1){//否则,如果ua中包含Trident
browser="IE";//browser赋值为"IE"
} document.write("<h1>浏览器名称:"+browser+"</h1>"); var version="unknown";
//如果browser不是"unknown"
if(browser!="unknown"){
if(browser=="Opera"){//如果browser是Opera
//在ua中查找OPR的位置,+3+1,保存在i中
var i=ua.indexOf("OPR")+3+1;
//截取ua中i位置之后的3位,转为浮点数保存在version中
version=parseFloat(ua.slice(i,i+3));
//否则,如果browser是"IE",且ua中找不到“MSIE”
}else if(browser=="IE"&&ua.indexOf("MSIE")==-1){
//将version改为"11"
version="11";
}else{//否则
//在ua中查找browser的位置,+browser的字符个数+1,保存在i中
var i=ua.indexOf(browser)+browser.length+1;
//选取ua中i位置之后的3位,转为浮点数保存在version中
version=parseFloat(ua.slice(i,i+3)); }
}
document.write("<h1>版本号:"+version+"</h1>")
</script>
</body>
</html>

JavaScript-navigator_userAgent-编写一段代码能够区分浏览器的主流和区分的更多相关文章

  1. (第一章)改善JavaScript,编写高质量代码。

    根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...

  2. 如何用Java编写一段代码引发内存泄露

    本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...

  3. (第二章)改善JavaScript,编写高质量代码。

    建议34:字符串是非值操作 var a = "javascript"; var b = a; b = b.toUpperCase(); alert(a); //javascript ...

  4. 怎样用Java编写一段代码引发内存泄露

    通过下面步骤能够非常easy产生内存泄露(程序代码不能訪问到某些对象,可是它们仍然保存在内存中): 应用程序创建一个长时间执行的线程(或者使用线程池,会更快地发生内存泄露). 线程通过某个类载入器(能 ...

  5. 编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)

    import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { i ...

  6. 兼容最新firefox、chrome和IE的javascript图片预览实现代码

    这篇文章主要介绍了兼容最新firefox.chrome和IE的javascript图片预览实现代码,测试了浏览器firefox6.firefox12.chrome 25.0.1364.172 m.IE ...

  7. 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

    建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...

  8. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  9. 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型

    今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...

随机推荐

  1. Qt中让Qwidget置顶的方法

    一般来是说窗体置顶和取消只要        setWindowFlags(Qt::WindowStaysOnTopHint);        setWindowFlags(Qt::Widget); 要 ...

  2. Python-day-21

    1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交: 提交 -> url > 函数或类中的方法 - .... HttpRespon ...

  3. 转载:Solr的自动完成实现方式(第三部分:Suggester方式续)

    转自:http://www.cnblogs.com/ibook360/archive/2011/11/30/2269126.html 在之前的两个部分(part1.part2)中,我们学会了如何配置和 ...

  4. window.location 结构

    属性 含义   protocol 协议   hostname 服务器的名字   port 端口   pathname URL中主机名后的部分   search "?"后的部分,又称 ...

  5. Redis学习笔记-进阶

    Redis持久化方案 redis有rdb和aof两种持久化方案 1)rdb方式 当符合一定条件时会自动将内存中的所有数据执行快照操作并存储到硬盘上 默认存储在redis根目录的dump.rdb文件中, ...

  6. oracle表结构和表内容差异比对

    oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...

  7. Android笔记:如何在Fragment里使用findViewById()方法?

    在Activity中,可以直接用findViewById(int id),通过xml的id来找到对应的View. 查找官方的api,具体如下: https://developer.android.go ...

  8. 网站fail_over测试(障害测试)

    确认Web和DB进行操作: 一:确认web: ①确认进程是否存在: ps aux|grep tomcat ②关闭tomcat: /etc/init.d/catalina_sbi stop ③重启tom ...

  9. C# Using 用法

    using 语句允许程序员指定使用资源的对象应当何时释放资源.为 using 语句提供的对象必须实现 IDisposable 接口.此接口提供了 Dispose 方法,该方法将释放此对象的资源. 一起 ...

  10. POJ3694 Network(连通图+LCA)

    题目链接:http://poj.org/problem?id=3694 题目大意:给定一个图,每次添加一条边(可能有重边).输出每次添加后桥的 数目.由于添加边的次数比较多,添加一次Tarjin一次明 ...