利用Javascript判断操作系统的类型实现不同操作系统下的兼容性


Posted in Javascript onJanuary 29, 2013

在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性,比如:我们有一个网站, 在Windows XP下浏览效果良好,但是到了Ubuntu下,由于许多特性不同,会造成在浏览上的细微差异,甚至会影响到良好的用户体验。这个时候我们就需要利用 Javascript对操作系统的类型以及某些特性进行判断,分而治之,从而实现网站在跨平台浏览时候保持良好的用户体验。
下边的代码实现对Windows、Mac、Linux、Unix擦作系统的判断:

<script type="text/javascript" language="JavaScript"> 
<!-- 
function check_os() { 
windows = (navigator.userAgent.indexOf("Windows",0) != -1)?1:0; 
mac = (navigator.userAgent.indexOf("mac",0) != -1)?1:0; 
linux = (navigator.userAgent.indexOf("Linux",0) != -1)?1:0; 
unix = (navigator.userAgent.indexOf("X11",0) != -1)?1:0; 
if (windows) os_type = "MS Windows"; 
else if (mac) os_type = "Apple mac"; 
else if (linux) os_type = "Lunix"; 
else if (unix) os_type = "Unix"; 
return os_type; 
} 
//--> 
</script>

如果我们需要对Windows操作系统进行更为精确的识别,可以继续使用下边的代码操作:
<script type="text/javascript" language="JavaScript"> 
<!-- 
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows"); // 确保为windows系统 
var isWin98 = isWin2000 = isWinXP = false; 
var sUserAgent = navigator.userAgent; 
if(isWin) { 
isWin98=sUserAgent.indexOf("Win98") > -1 || sUserAgent.indexOf("Windows 98") > -1; // win98 
isWin2000=sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1; //win2000 
isWinXP=sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows Xp") > -1; //winxp 
isWin98 && alert("window 98"); 
isWin2000 && alert("windows 2000"); 
isWinXP && alert("windows XP"); 
} 
//--> 
</script>

下边的代码是为了实现对浏览器是否支持XML特性的检测:
<script type="text/javascript" language="JavaScript"> 
var SupportXml=false; 
var xmldom; 
if(window.ActiveXObject) { 
try { 
xmldom=new ActiveXObject("Microsoft.XMLDOM"); 
SupportXml=(xmldom.loadXML(" <ok/>")); 
} catch(e) {} 
} 
else if(document.implementation && document.implementation.createDocument) { 
SupportXml=true; 
} 
alert('XML状态为:'+SupportXml); 
</script>

PS:为了更好地避免不同浏览器,不同操作系统因为默认文字不同而对页面布局造成影响,应尽量避免CSS中使用固定行高(height:12px;)对 文字高度进行限定,应该尽量使用height:auto,如果迫不得已必须限定文字高度(比如只显示一行),则应使用em代替px(例如 height:1.1em;),1em=1文字高度,这样就使得文字高度随着文字大小动态改变,不会造成文字截断现象的发生了。
Javascript 相关文章推荐
javascript 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
jQuery实现id模糊查询的小例子
Mar 19 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
Oct 10 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
Jan 08 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 #Javascript
JavaScript起点(严格模式深度了解)
Jan 28 #Javascript
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 #Javascript
JavaScript转换农历类实现及调用方法
Jan 27 #Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 #Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
Jan 27 #Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
Jan 27 #Javascript
You might like
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
vue实现固定位置显示功能
2019/05/30 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python实现图片筛选程序
2018/10/24 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
外贸业务员岗位职责
2013/11/24 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
检讨书格式
2015/01/23 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书