『壹』 js辨别访问浏览器判断是android还是ios系统
<script type="text/javascript">
/*
* 智能机浏览器版本信息:
*
*/
var browser = {
versions: function() {
var u = navigator.userAgent, app = navigator.appVersion;
return {//移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('linux') > -1, //android终端或者uc浏览器
iphone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者qqHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
window.location="https://itunes.apple.com/xxx";
}
else if (browser.versions.android) {
window.location="http://xxx/xxx.apk";
}
// document.writeln("语言版本: " + browser.language);
// document.writeln(" 是否为移动终端: " + browser.versions.mobile);
// document.writeln(" ios终端: " + browser.versions.ios);
// document.writeln(" android终端: " + browser.versions.android);
// document.writeln(" 是否为iPhone: " + browser.versions.iPhone);
// document.writeln(" 是否iPad: " + browser.versions.iPad);
// document.writeln(navigator.userAgent);
</script>
『贰』 js判断浏览器是否是极速模式或者Chrome内核
主要用到navigator.userAgent
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function myBrowser(){
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
console.log(userAgent);
var isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera) {
return "Opera"
}; //判断是否Opera浏览器
if (userAgent.indexOf("Firefox") > -1) {
return "FF";
} //判断是否Firefox浏览器
if (userAgent.indexOf("Chrome") > -1){
return "Chrome";
}
if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
return "IE";
}; //判断是否IE浏览器
}
var cc = myBrowser();
if(cc == "Chrome"){
alert("当前是Chrome浏览器")
}
if(cc == "IE"){
alert("当前是IE浏览器")
}
</script>
</body>
</html>
『叁』 js检测浏览器的基本信息 如:版本 内核 。。。。
(function(win,doc,nav)
{
/**
*@des浏览器判断脚本,兼容cmd规范
*/
varua=nav.userAgent.toLowerCase(),key=
{
ie:"msie",
sf:"safari",
tt:"tencenttraveler"
},
//正则列表
reg=
{
browser:"("+key.ie+"|"+key.sf+"|firefox|chrome|opera)",
shell:"(maxthon|360se|360chrome|theworld|se|theworld|greenbrowser|qqbrowser|lbbrowser|bibrowser)",
tt:"(tencenttraveler)",
os:"(windowsnt|macintosh|solaris|linux)",
kernel:"(webkit|gecko|likegecko)"
},System=
{
"5.0":"Win2000",
"5.1":"WinXP",
"5.2":"Win2003",
"6.0":"WinVista",
"6.1":"Win7",
"6.2":"Win8",
"6.3":"Win8.1"
},chrome=null,is360Chrome=null,//360浏览器
is360se=null,//360级速浏览器
//特殊浏览器检测
is360=(function()
{
//高速模式
varresult=ua.indexOf("360chrome")>-1?!!1:!1,s;
//普通模式
try
{
if(win.external&&win.external.twGetRunPath)
{
s=win.external.twGetRunPath;
if(s&&s.indexOf("360se")>-1)
{
result=!!1;
}
}
}
catch(e)
{
result=!1;
}
returnresult;
})(),
//判断网络浏览器
isBai=(function()
{
returnua.indexOf('bibrowser')>-1?!!1:!1;
})(),
//判断网络影音浏览器
isBaiPlayer=(function()
{
returnua.indexOf('biplayer')>-1?!!1:!1;
})(),
//判断爱帆avant浏览器
isAvant=(function()
{
returnua.indexOf('爱帆')>-1?!!1:!1;
})(),isLiebao=(function()
{
returnua.indexOf('lbbrowser')>-1?!!1:!1;
})(),
//特殊检测maxthon返回版本号
maxthonVer=function()
{
try
{
if(/(d+.d)/.test(win.external.max_version))
{
returnparseFloat(RegExp['x241']);
}
}
catch(e)
{
}
}(),browser=getBrowser(),shell=uaMatch(reg.shell),os=uaMatch(reg.os),kernel=uaMatch(reg.kernel);
//ie11
functiongetBrowser()
{
//检测是否是ie内核是否是ie10标识
if((!!win.ActiveXObject||"ActiveXObject"inwin)
&&(ua.match(/.netclr/gi)&&ua.match(/rv:(w+.w+)/gi)))
{
return[
"msie",ua.match(/rv:(w+.w+)/gi)[0].split(":")[1]
];
}
returnuaMatch(reg.browser);
}
/**
*对ua字符串进行匹配处理
*
*@param{string}
*str要处理的字符串
*@return{array}返回处理后的数组
*/
functionuaMatch(str)
{
varreg=newRegExp(str+"\b[\/]?([\w\.]*)","i"),result=ua.match(reg);
returnresult?result.slice(1):[
"",""
];
}
functiondetect360chrome()
{
return'track'indocument.createElement('track')&&'scoped'indocument.createElement('style');
}
functionisHao123()
{
return!!(window.external&&window.external.ExtGetAppPath&&window.external.ExtGetAppPath());
}
functionisIpad()
{
returnua.indexOf("ipad")>-1||ua.indexOf("iphone")>-1;
}
functioncanvasSupport()
{
return!!document.createElement('canvas').getContext;
}
//保存浏览器信息
if(browser[0]===key.ie)
{
if(is360)
{
shell=[
"360se",""
];
}
elseif(maxthonVer)
{
shell=[
"maxthon",maxthonVer
];
}
elseif(shell==",")
{
shell=uaMatch(reg.tt);
}
}
elseif(browser[0]===key.sf)
{
browser[1]=uaMatch("version")+"."+browser[1];
}
chrome=(browser[0]=="chrome")&&browser[1];
//如果是chrome浏览器,进一步判断是否是360浏览器
if(chrome)
{
if(detect360chrome())
{
if('v8Locale'inwindow)
{
is360Chrome=true;
}
else
{
is360se=true;
}
}
}
/*
*获取操作系统
*/
functiongetSystem()
{
varplat=navigator.platform,isWin=(plat=="Win32")||(plat=="Windows")||(plat=="Win64"),isMac=(plat=="Mac68K")
||(plat=="MacPPC")||(plat=="Macintosh")||(plat=="MacIntel");
if(isMac)
{
return"Mac";
}
varisUnix=(plat=="X11")&&!isWin&&!isMac;
if(isUnix)
{
return"Unix";
}
varisLinux=(String(plat).indexOf("Linux")>-1);
if(isLinux)
{
return"Linux";
}
if(isWin)
{
returnSystem[os[1]]||"other";
}
return"other";
}
//遵循cmd规范,输出浏览器、系统等响应参数
window.exports=
{
cookieEnabled:navigator.cookieEnabled,
isStrict:(doc.compatMode=="CSS1Compat"),
isShell:!!shell[0],
shell:shell,
kernel:kernel,
platform:os,
types:browser,
chrome:chrome,
system:getSystem(),
firefox:(browser[0]=="firefox")&&browser[1],
ie:(browser[0]=="msie")&&browser[1],
opera:(browser[0]=="opera")&&browser[1],
safari:(browser[0]=="safari")&&browser[1],
maxthon:(shell[0]=="maxthon")&&shell[1],
isTT:(shell[0]=="tencenttraveler")&&shell[1],
is360:is360,
is360Chrome:is360Chrome,//是否是chrome内核的360浏览器
is360se:is360se,//是否是chrome内核的360极速浏览器
isBai:isBai,
isHao123:isHao123,//判断hao123浏览器
isLiebao:isLiebao,
isSougou:(shell[0]=="se"),
isQQ:shell[0]=="qqbrowser",
isIpad:isIpad,
version:'',
noDl:isBai||isAvant||isBaiPlayer,//浏览器下载入口需排除的浏览器
canvasSupport:canvasSupport()//是否支持canvas
};
})(window,document,navigator);
判断原理:
JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
浏览器类型
⑴浏览器特有属性
⑵根据userAgent
浏览器版本
⑴根据userAgent
对于手机浏览器判断
1.如何判断是否为移动终端利用正则match,
匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile
安卓qq浏览器HD版只有AppleWebKit
2手机语言版本的判断
使用navigator.browserLanguage便可得出windowsphone语言版本,
当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出navigator.language
<scripttype="text/javascript">
varbrowser={
versions:function(){
varu=navigator.userAgent,app=navigator.appVersion;
return{//移动终端浏览器版本信息
trident:u.indexOf('Trident')>-1,//IE内核
presto:u.indexOf('Presto')>-1,//opera内核
webKit:u.indexOf('AppleWebKit')>-1,//苹果、谷歌内核
gecko:u.indexOf('Gecko')>-1&&u.indexOf('KHTML')==-1,//火狐内核
mobile:!!u.match(/AppleWebKit.*Mobile.*/),//是否为移动终端
ios:!!u.match(/(i[^;]+;(U;)?CPU.+MacOSX/),//ios终端
android:u.indexOf('Android')>-1||u.indexOf('Linux')>-1,//android终端或uc浏览器
iPhone:u.indexOf('iPhone')>-1,//是否为iPhone或者QQHD浏览器
iPad:u.indexOf('iPad')>-1,//是否iPad
webApp:u.indexOf('Safari')==-1//是否web应该程序,没有头部与底部
};
}(),
language:(navigator.browserLanguage||navigator.language).toLowerCase()
}
document.writeln("语言版本:"+browser.language);
document.writeln("是否为移动终端:"+browser.versions.mobile);
document.writeln("ios终端:"+browser.versions.ios);
document.writeln("android终端:"+browser.versions.android);
document.writeln("是否为iPhone:"+browser.versions.iPhone);
document.writeln("是否iPad:"+browser.versions.iPad);
document.writeln(navigator.userAgent);
</script>
比较特别的地方
UC浏览器没有安卓报头,只返回:linux,这里粗略的根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)
安卓QQ浏览器HD版检测的结果是:mac,Safari
『伍』 JS辨别访问浏览器判断是android还是ios系统
1、通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端。代码如下:
『陆』 【玩转移动端系列】浏览器内核WebKit长啥样
Webkit是众多主流浏览器的核心组件,其架构主要包括嵌入式接口、WebCore渲染引擎、JavaScriptCore引擎,以及适应不同平台的WebKit Ports部分。以下是关于Webkit内核的详细解析:
1. WebCore渲染引擎 功能:负责解析HTML和CSS,是浏览器一致性的重要部分。 组件:包含HTML/CSS解释器、DOM管理和渲染树等功能,确保网页内容能够正确、高效地展示。
2. JavaScriptCore引擎 地位:是WebKit默认的JS引擎。 性能:起初性能不佳,但随着技术发展,通过优化DOM操作等方式,减少了性能损失。Chrome等浏览器则选择了性能更强的V8引擎作为替代。 组件: JSVM:负责提供JS运行环境,与ObjectiveC通信,每个JSVM独立运行,不支持跨JSVM对象传递。 JSContext:运行JavaScript代码的上下文环境。 JSValue:用于数据交换的组件。 JSExport:允许Native对象与JS环境进行交互。
3. JIT技术 作用:通过编译热点代码并缓存,提高代码执行效率,进一步优化浏览器性能。
4. WebKit Ports 功能:适应不同平台的WebKit部分,确保Webkit内核能够在多种操作系统和设备上稳定运行。
总的来说,Webkit内核的复杂结构和优化策略确保了浏览器的高效渲染和JavaScript执行,为现代Web应用提供了强大支持。
『柒』 js判断360浏览器是兼容模式还是极速模式
代码如下:
<html>
<head>
<title>JS显示当前浏览器详细信息</title>
<SCRIPT>
functionwhatBrowser()
{
document.Browser.Name.value=navigator.appName;
document.Browser.Version.value=navigator.appVersion;
document.Browser.Code.value=navigator.appCodeName;
document.Browser.Agent.value=navigator.userAgent;
if(window.navigator.userAgent.indexOf('compatible')!=-1){
alert('360兼容模式');
}
if(window.navigator.userAgent.indexOf('AppleWebKit')!=-1){
alert('360极速模式');
}
}
</SCRIPT>
<TABLEBORDER>
</head>
<bodybgcolor="#fef4d9"onLoad="whatBrowser()">
<FORMNAME="Browser">
<TR><TD>名称:</TD><TD>
<INPUTTYPE="txt"NAME="Name"Size="150"></TD></TR>
<TR><TD>版本:</TD><TD><INPUTTYPE="txt"NAME="Version"Size="150"></TD></TR><TR><TD>内核:</TD>
<TD><INPUTTYPE="txt"NAME="Code"Size="150"></TD>
</TR><TR><TD>User-Agent:</TD>
<TD><INPUTTYPE="txt"NAME="Agent"Size="150"></TD>
</TR>
</FORM>
</TABLE>
</body>
</html>