利用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 相关文章推荐
Mootools 1.2教程 滚动条(Slider)
Sep 15 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
Jun 26 Javascript
使用JS读秒使用示例
Sep 21 Javascript
JavaScript获取路径设计源码
May 22 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
剖析Angular Component的源码示例
Mar 23 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
Aug 25 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
vue+Element-ui实现登录注册表单
Nov 17 Javascript
Vue如何循环提取对象数组中的值
Nov 18 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
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
javascript 写类方式之四
2009/07/05 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
环境工程毕业生自荐信
2013/11/17 职场文书
黄金酒广告词
2014/03/21 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
投标服务承诺书
2014/05/28 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
会计工作检讨书
2015/02/19 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python