浏览器检测一般都用UserAgent来判别吗?有没有用一些浏览器特有的特征来检测的,比如
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Borser Detection</title>
<script type="text/javascript">
function selfUserAgent(){
if(window.ActiveXObject){ //MSIE 6.0 or below
//判断是否是IE 7以上
if(document.documentElement && typeof document.documentElement.style.maxHeight != "undefined" ){
//判断是否是IE8+
if(typeof document.adoptNode != "undefined"){//Safari3 & FF & Opera & Chrome & IE8+
return "IE8及以上";
}
return "IE7及以上";
}
return "MSIE 6.0 or below";
}else if(typeof window.opera != "undefined"){ //Opera 独占
return "Opera";
}else if(typeof window.netscape != "undefined"){ //mozilla 独占
if(typeof window.Iterator != "undefined"){
if(typeof document.styleSheetSets != "undefined"){//Firefox &Opera 9
return "firefox 3及以上";
}
return "firefox 2";
}
return "Mozilla 1";
}else if(typeof window.pageXOffset != "undefined"){ //Mozilla & safari
try{
if(typeof external.AddSearchProvider != "undefined"){ //firefox & chrome
return "chrome";
}
} catch (e) {
return "safari";
}
}else { //unknown
return "unknown";
}
}; </script>
</head><body >
<script type="text/javascript">
document.write(selfUserAgent());
</script></script>
</body>
</html>能不能做到判断的更详细一点的呢?比如说还可以判断其他类型的浏览器,比如说判断出的浏览器版本更详细些。求各位大神指导啊! 浏览器JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Borser Detection</title>
<script type="text/javascript">
function selfUserAgent(){
if(window.ActiveXObject){ //MSIE 6.0 or below
//判断是否是IE 7以上
if(document.documentElement && typeof document.documentElement.style.maxHeight != "undefined" ){
//判断是否是IE8+
if(typeof document.adoptNode != "undefined"){//Safari3 & FF & Opera & Chrome & IE8+
return "IE8及以上";
}
return "IE7及以上";
}
return "MSIE 6.0 or below";
}else if(typeof window.opera != "undefined"){ //Opera 独占
return "Opera";
}else if(typeof window.netscape != "undefined"){ //mozilla 独占
if(typeof window.Iterator != "undefined"){
if(typeof document.styleSheetSets != "undefined"){//Firefox &Opera 9
return "firefox 3及以上";
}
return "firefox 2";
}
return "Mozilla 1";
}else if(typeof window.pageXOffset != "undefined"){ //Mozilla & safari
try{
if(typeof external.AddSearchProvider != "undefined"){ //firefox & chrome
return "chrome";
}
} catch (e) {
return "safari";
}
}else { //unknown
return "unknown";
}
}; </script>
</head><body >
<script type="text/javascript">
document.write(selfUserAgent());
</script></script>
</body>
</html>能不能做到判断的更详细一点的呢?比如说还可以判断其他类型的浏览器,比如说判断出的浏览器版本更详细些。求各位大神指导啊! 浏览器JavaScript
解决方案 »
- javascript实现人员按天按周值班且可以按每天8点开始值班功能实现代码分享
- js文件如何使用同文件夹下的asp文件中的变量?( 加急!!!)
- 关于EXT的问题
- 请教一个关于(c:forEach)标签问题
- 急!js实现文本框输入自动提示问题 在线等
- 请问下面这段控制select的代码哪里有错误
- jq如何动态获取标签id方法?
- 问:用window.close(),怎能才不弹出确认对话框?
- 我想打开一个新的页面时,被打开的页面没有标题栏,或者不是传统的IE的标题栏?请问这个怎么实现?
- jquery表格插件datatable如何更换数据(重新加载别的数据)?
- href="#"的问题
- jquery ajax 请求回来的数据显示在页面 保留不住
Thank you !可是其他类型的浏览器我也需要检测,桑不起的毕业设计!
var client=function(){
var engine={
//呈现引擎
ie:0,
gecko:0,
webkit:0,
khtml:0,
opera:0,
//版本号
ver:null
};
var browser={
//主要浏览器
ie:0,
firefox:0,
safari:0,
konq:0,
opera:0,
chrome:0
//具体版本号
ver:null
};
var system={
//平台、设备和移动平台
win:false,
mac:false,
xll:false,
iphone:false,
ipad:false,
ipod:false,
ios:false,
android:false,
nokiaN:false,
winMobile:false,
wii:false,
ps:false
};
var ua=navigator.userAgent;
if(window.opera){
engine.ver=browser.ver=window.opera.version();
engine.opera=browser.opera=parseFloat(engine.ver);
}else if(/AppleWebKit\/(\s+)/.test(ua)){
engine.ver=RegExp["$1"];
engine.webkit=parseFloat(browser.ver);
//确定是chrome还是safari
if(/Chrome\/(\s+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.chrome=parseFloat(browser.ver);
}else if(/Version\/(\s+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.safari=parseFloat(browser.ver);
}else{
var safariVersion=1;
if(engine.webkit<100){
safariVersion=1;
}else if(engine.webkit<312){
safariVersion=1.2;
}else if(engine.webkit<412){
safariVersion=1.3;
}else{
safariVersion=2;
}
browser.safari=browser.ver=safariVersion;
}
}else if(/KHTML\/(\s+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.khtml=browser.konq=parseFloat(engine.ver);
}else if(/rv:([^\]+)\) Gecko\/\d{8}/.test(ua)){
engine.ver=RegExp["$1"];
engine.gecko=parseFloat(engine.ver);
//确定是不是FireFox
if(/FireFox\/(\s+)/.test(ua)){
browser.ver=RegExp["$1"];
browser.firefox=parseFloat(browser.ver);
}
}else if(/MSIE([^;]+)/.test(ua)){
engine.ver=browser.ver=RegExp["$1"];
engine.ie=browser.ie=parseFloat(engine.ver);
}
//检测浏览器
browser.ie=engine.ie;
browser.opera=engine.opera;
//检测平台
var p=navigator.platform;
system.win=p.indexOf("Win")==0;
system.mac=p.indexOf("Mac")==0;
system.xll=(p=="xll"||(p.indexOf("Linux")==0));
//检测windows操作系统
if(system.win){
if(/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){
if(RegExp["$1"]=="NT"){
switch(RegExp["$2"]){
case "5.0":system.win="2000";break;
case "5.1":system.win="XP";break;
case "6.0":system.win="Vista";break;
case "6.1":system.win="7";break;
default:system.win="NT";break;
}
}else if(RegExp["$1"]){
system.win="ME";
}else{
system.win=RegExp["$1"];
}
}
}
//移动设备
system.iphone=ua.indexOf("iPhone")>-1;
system.ipod=ua.indexOf("iPod")>-1;
system.ipad=ua.indexOf("iPad")>-1;
system.nokiaN=ua.indexOf("NokiaN")>-1;
//windows mobile
if(system.win=="CE"){
system.winMobile=system.win;
}else if(system.win=="Ph"){
if(/Window Phone OS (\d+.\d+)/.test(ua)){
system.win="Phone";
system.winMobile=parseFloat(RegExp["$1"]);
}
}
//检测IOS版本
if(system.mac&&ua.indexOf("Mobile")>-1){
if(/CPU (?:iPhone)?OS (\d+_\d+)/.test(ua)){
system.ios=parseFloat(RegExp.$1.replace("_","."));
}else{
system.ios=2;
}
}
//检测Android
if(/Android (\d+\.\d+)/.test(ua)){
system.android=parsefloat(RegExp["$1"]);
}
//游戏系统
system.wii=ua.indexOf("Wii")>-1;
system.ps=/playstation/i.texst(ua);
//返回这些对象
return {
engine:engine,
browser:browser,
system:system
};
};
第二种能力检测检测手段如下:
var hasXmlDom=document.implementation.hasFeature("XML","1.0");
但是这个检测有时并不可靠,需要进行能力检测。
var explorer = window.navigator.userAgent ;
//ie
if (explorer.indexOf("MSIE") >= 0) {
alert("ie");
}
//firefox
else if (explorer.indexOf("Firefox") >= 0) {
alert("Firefox");
}
//Chrome
else if(explorer.indexOf("Chrome") >= 0){
alert("Chrome");
}
//Opera
else if(explorer.indexOf("Opera") >= 0){
alert("Opera");
}
//Safari
else if(explorer.indexOf("Safari") >= 0){
alert("Safari");
}
}常用的判断方法:
1、判断浏览器是否为IE
document.all ? 'IE' : 'others':在IE下document.all值为1,而其他浏览器下的值为0;
navigator.userAgent.indexOf("MSIE")>0 ? 'IE' : 'others':navigator.userAgent是描述用户代理信息。
navigator.appName.indexOf("Microsoft") != -1 ? 'IE' : 'others':navigator.appName描述浏览器名称信息。
2、判断IE版本
navigator.appVersion.match(/6./i)=="6." ? 'IE6' : 'other version':在已知是IE浏览器的情况下,可以通过此方法判断是否是IE6;
navigator.userAgent.indexOf("MSIE 6.0")>0 ? 'IE7' : 'other version':同上;
navigator.appVersion.match(/7./i)=="7." ? 'IE7' : 'other version':在已知是IE浏览器的情况下,可以通过此方法判断是否是IE7;
navigator.userAgent.indexOf("MSIE 7.0")>0 ? 'IE7' : 'other version':同上;
navigator.appVersion.match(/8./i)=="8." ? 'IE8' : 'other version':在已知是IE浏览器的情况下,可以通过此方法判断是否是IE8;
navigator.userAgent.indexOf("MSIE 8.0")>0 ? 'IE8' : 'other version':同上。
3、JS获取浏览器信息
浏览器代码名称:navigator.appCodeName
浏览器名称:navigator.appName
浏览器版本号:navigator.appVersion
对Java的支持:navigator.javaEnabled()
MIME类型(数组):navigator.mimeTypes
系统平台:navigator.platform
插件(数组):navigator.plugins
用户代理:navigator.userAgent
DEMO:
Js代码
<script language="JavaScript">
<!--
function getOs()
{
var OsObject = "";
if(navigator.userAgent.indexOf("MSIE")>0) {
return "MSIE";
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
return "Firefox";
}
if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
return "Safari";
}
if(isCamino=navigator.userAgent.indexOf("Camino")>0){
return "Camino";
}
if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
return "Gecko";
}
}
alert("您的浏览器类型为:"+getOs());
-->
</script>