JavaScript-navigator_userAgent-编写一段代码能够区分浏览器的主流和区分
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-编写一段代码能够区分浏览器的主流和区分的更多相关文章
- (第一章)改善JavaScript,编写高质量代码。
根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...
- 如何用Java编写一段代码引发内存泄露
本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...
- (第二章)改善JavaScript,编写高质量代码。
建议34:字符串是非值操作 var a = "javascript"; var b = a; b = b.toUpperCase(); alert(a); //javascript ...
- 怎样用Java编写一段代码引发内存泄露
通过下面步骤能够非常easy产生内存泄露(程序代码不能訪问到某些对象,可是它们仍然保存在内存中): 应用程序创建一个长时间执行的线程(或者使用线程池,会更快地发生内存泄露). 线程通过某个类载入器(能 ...
- 编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)
import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { i ...
- 兼容最新firefox、chrome和IE的javascript图片预览实现代码
这篇文章主要介绍了兼容最新firefox.chrome和IE的javascript图片预览实现代码,测试了浏览器firefox6.firefox12.chrome 25.0.1364.172 m.IE ...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
- javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数
javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...
- 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...
随机推荐
- CSS overflow 属性
值 描述 visible 默认值.内容不会被修剪,会呈现在元素框之外. hidden 内容会被修剪,并且其余内容是不可见的. scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容. ...
- [Swift] 疑难杂症
[Swift] 疑难杂症 1.class .... has no initializers --> class 的每一个元素都需要初始化,否则会报错,除了可空元素
- HDU 1251统计难题
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- Vue.js 组件重要选项
(一) new一个Vue对象的时候,可以设置它的属性,其中最重要是三个,分别是 data,,methods,watch. new Vue({ data:{ a:, b:[] }, methods:{ ...
- JavaWeb 学习009-4个页面,5条sql语句(添加、查看、修改、删除)
===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++ 2016-12-3------ ...
- x-requested-with 请求头 区分ajax请求还是普通请求(转)
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept t ...
- [翻译]:怎样从C/C++代码中对C#进行回调
声明:网络上类似的中文博客大有存在,本人知识水平有限,业余爱好,也是为了备份收藏How to make a callback to C# from C/C++ code 本着共享知识的初衷,翻译一份给 ...
- mock测试框架Mockito
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- factory service provide自定义服务
1.factory factory , 就是你提供一个方法, 该方法返回一个对象的实例, 对于 AngularJS 的 factory 来说, 就是先定义一个对象, 给这个对象添加属性和方法, 然后返 ...
- NC 查询公司下所分配的组织,并存放字符串数组中
private String[] querkFather() { String sql = "select pk_org from org_orgs start with pk_father ...