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. c#自制视屏监控

    项目需要开发一个监控程序,主要是监控其它电脑的操作情况. 先说下原理吧,首先我们列出做远程监控的基本步骤,远端电脑的ip,捕捉屏幕的方法,传输,接收并显示. 突然不知道怎么写下去了....... 程序 ...

  2. 动态添加input标签

    <style type="text/css">        .delete_attach        {            padding-left: 18px ...

  3. navigator对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. nullcon HackIM 2016 -- Crypto Question 3

    After entring the luxurious condomium,you get the feel that you are in home of a yester Star. the ex ...

  5. 初学c# -- 学习笔记(七) RichTextBox支持GIF

    园子里许明吉博客写的一篇,刚好用到这个,写的非常好.转过来了 不过在应用中也有一些问题,win10下不能中文输入,凑合着进行了修改, 下面是原来的代码: private void button2_Cl ...

  6. 检测是否IE浏览器

    function browserIsIE(){ if (window.ActiveXObject) return true; else{ var u_agent = navigator.userAge ...

  7. 枚举全排列(包括数列中有重复数)的C语言实现

    据说是用了DFS的思想--然鹅并不知道这是DFS. 主要就是选取一个数放到数组相应位置上,然后递归的排列剩下的数组,将剩下的数组递归排列完了之后再把数放回去,然后这一层递归就返回了-- 有重复数的话遇 ...

  8. php 随记

    1. 删除数组里面为空的元素 $arr = [ '1', '0', '', '[]', 'false', 'true', ' ' ]; //以以上的数组为例 $codes = array_filter ...

  9. ios 正则表达式之验证手机号、邮箱、身份证、银行卡

    1.手机号 + (BOOL) IsPhoneNumber:(NSString *)number { NSString *phoneRegex1=@"1[34578]([0-9]){9}&qu ...

  10. colorbox 自适应 高度

    $(".example3").colorbox({  inline: true, scrolling: false ,                    onComplete: ...