/* 可配置部分
***************************************************************************************/
var webkitVersionUrl = "http:\/\/trac.webkit.org\/browser\/tags\/Safari-%s";
var vi = [
// chromium主版本号信息
{
first:{version:"5.0.307.1", date:"2010年1月。"},
normal:{version:"5.0.375.55", date:"2010年5月。"},
last:{version:"5.0.375.127", date:"2010年8月。"}
},
{
first:{version:"6.0.408.1", date:"2010年5月。"},
normal:{version:"6.0.472.53", date:"2010年9月。"},
last:{version:"6.0.472.62", date:"2010年9月。"}
},
{
first:{version:"7.0.503.0", date:"2010年8月。"},
normal:{version:"7.0.517.43", date:"2010年10月。"},
last:{version:"7.0.517.44", date:"2010年11月。"}
},
{
first:{version:"8.0.552.5", date:"2010年10月。"},
normal:{version:"8.0.552.215", date:"2010年11月。"},
last:{version:"8.0.552.237", date:"2011年1月。"}
},
{
first:{version:"9.0.570.1", date:"2010年11月。"},
normal:{version:"9.0.597.84", date:"2011年2月。"},
last:{version:"9.0.597.107", date:"2011年2月。"}
},
{
first:{version:"10.0.612.3", date:"2010年12月。"},
normal:{version:"10.0.648.127", date:"2011年3月。"},
last:{version:"10.0.648.205", date:"2011年4月。"}
},
{
first:{version:"11.0.686.0", date:"2011年2月。"},
normal:{version:"11.0.696.57", date:"2011年4月。"},
last:{version:"11.0.696.77", date:"2011年6月。"}
},
{
first:{version:"12.0.712.0", date:"2011年3月。"},
normal:{version:"12.0.742.91", date:"2011年6月。"},
last:{version:"12.0.742.112", date:"2011年7月。"}
},
{
first:{version:"13.0.767.1", date:"2011年5月。"},
normal:{version:"13.0.782.107", date:"2011年8月。"},
last:{version:"13.0.782.220", date:"2011年9月。"}
},
{
first:{version:"14.0.794.0", date:"2011年6月。"},
normal:{version:"14.0.835.163", date:"2011年9月。"},
last:{version:"14.0.835.202", date:"2011年10月。"}
},
{
first:{version:"15.0.849.0", date:"2011年8月。"},
normal:{version:"15.0.874.102", date:"2011年10月。"},
last:{version:"15.0.874.121", date:"2011年11月16日。"}
},
{
first:{version:"16.0.899.0", date:"2011年9月。"},
normal:{version:"16.0.912.63", date:"2011年12月13日。"},
last:{version:"16.0.912.77 ", date:"2012年1月23日。"}
},
{
first:{version:"17.0.928.0", date:"2011年11月。"},
normal:{version:"17.0.963.46", date:"2012年2月8日。"},
last:{version:"17.0.963.84", date:"2012年3月22日。"}
},
{
first:{version:"18.0.1003.1", date:"2012年1月10日。"},
normal:{version:"18.0.1025.142", date:"2012年4月30日。"},
last:{version:"18.0.1025.168", date:"2012年4月30日。"}
},
{
first:{version:"19.0.1041.0", date:"2012年2月14日。"},
normal:{version:"19.0.1084.52", date:"2012年5月23日。"},
last:{version:"19.0.1084.56", date:"2012年6月11日。"}
},
{
first:{version:"20.0.1096.1", date:"2012年4月10日。"},
normal:{version:"20.0.1132.43", date:"2012年6月26日。"},
last:{version:"20.0.1132.59", date:"2012年7月28日。"}
},
{
first:{version:"21.0.1145.0", date:"2012年5月21日。"},
normal:{version:"21.0.1180.60", date:"2012年7月31日。"},
last:{version:"21.0.1180.90", date:"2012年9月24日。"}
},
{
first:{version:"22.0.1207.1", date:"2012年7月16日。"},
normal:{version:"22.0.1229.79", date:"2012年9月25日。"},
last:{version:"22.0.1229.94", date:"2012年10月10日。"}
},
{
first:{version:"23.0.1243.2", date:"2012年8月23日。"},
normal:{version:"23.0.1271.83", date:"2012年9月2日。"},
last:{version:"23.0.1271.101", date:"2012年12月17日。"}
},
{
first:{version:"24.0.1284.2", date:"2012年10月2日。"},
normal:{version:"24.0.1312.52", date:"2013年1月10日。"},
last:{version:"24.0.1312.71", date:"2012年2月14日。"}
},
{
first:{version:"25.0.1359.3", date:"2012年12月13日。"},
normal:{version:"25.0.1364.97", date:"2013年2月21日。"},
last:{version:"25.0.1364.172", date:"2013年3月12日。"}
},
{
first:{version:"26.0.1384.2", date:"2013年1月15日。"},
normal:{version:"26.0.1410.43", date:"2013年3月26日。"},
last:{version:"26.0.1410.64", date:"2013年4月9日。"}
},
{
first:{version:"27.0.1423.0", date:"2013年2月26日。"},
normal:{version:"27.0.1453.12", date:"2013年4月2日。"},
last:{version:"27.0.1453.116", date:"2013年6月18日。"}
},
{
first:{version:"28.0.1464.0", date:"2013年4月5日。"},
normal:{version:"28.0.1500.71", date:"2013年7月9日。"},
last:{version:"28.0.1500.95", date:"2013年7月30日。"}
},
{
first:{version:"29.0.1516.3", date:"2013年5月24日。"},
normal:{version:"29.0.1547.57", date:"2013年8月20日。"},
last:{version:"29.0.1547.76", date:"2013年9月18日。"}
},
{
first:{version:"30.0.1566.2", date:"2013年7月16日。"},
normal:{version:"30.0.1599.66", date:"2013年10月01日。"},
last:{version:"30.0.1599.114", date:"2013年10月22日。"}
},
{
first:{version:"31.0.1612.0", date:"2013年8月27日。"},
normal:{version:"31.0.1650.48", date:"2013年11月12日。"},
last:{version:"31.0.1650.63", date:"2013年12月04日。"}
},
{
first:{version:"32.0.1659.2", date:"2013年11月03日。"},
normal:{version:"", date:""},
last:{version:"", date:""}
},
{
first:{version:"33.0.1707.0", date:"2013年11月12日。"},
normal:{version:"", date:""},
last:{version:"", date:""}
}
];
var suggestion = [
// 大版本号大于最新版
"此版本极速内核尚未发布正式版,您可以作为尝鲜时使用。",
// 大版本号为最新版,子版本号大于等于对应的版本号
"此版本内核为已发布正式版的最新版极速内核,建议您继续使用。",
// 大版本号为最新版,子版本号小于对应的版本号
"此版本极速内核为非正式版,建议您选择使用最新正式版内核的浏览器。",
// 大版本号为最新版-1,子版本号大于等于对应的版本号
"此版本极速内核为较新的正式版。建议您继续使用,等待浏览器升级内核。",
// 大版本号为最新版-1,子版本号小于对应的版本号
"此版本极速内核为非正式版。建议您选择使用最新正式版内核的浏览器。",
// 大版本号大于等于8、小于最新版-1,子版本号大于对应的版本号
"此版本极速内核较旧。建议您选择使用最新正式版内核的浏览器。",
// 大版本号大于等于8、小于最新版-1,子版本号小于对应的版本号
"此版本极速内核为较旧的非正式版。建议您选择使用最新正式版内核的浏览器。",
// 大版本号大于等于5、小于8,子版本号大于对应的版本号
"此版本极速内核非常陈旧,面临安全风险。建议您立即更换为使用最新正式版内核的浏览器。",
//大版本号大于等于5、小于8,子版本号小于对应的版本号
"此版本极速内核为非常陈旧的非正式版,面临安全风险。建议立即更换为使用最新正式版内核的浏览器。",
// 大版本号小于最低版本号
"此版本极速内核非常陈旧,面临安全风险。建议您立即更换为使用最新正式版内核的浏览器。"
];
/*
**********************************************************************************************/
/*
* 函数功能: 判断两个版本号的大小
* 函数参数: 两个版本号的字符串
* 函数返回值: 1 表示第一个版本号大于第二个
* 0 表示两个版本号相同
* -1 表示第一个版本号小于第二个
*/
function cmpVersion(szV1, szV2) {
var arrV1 = szV1.split(".");
var arrV2 = szV2.split(".");
for (var i = 0; i < arrV1.length && i < arrV2.length; i++) {
if (parseInt(arrV1[i]) > parseInt(arrV2[i]))
return (1);
else if (parseInt(arrV1[i]) < parseInt(arrV2[i]))
return (-1);
}
if (arrV1.length == arrV2.length) {
return (0);
} else if (arrV1.length > arrV2.length) {
return (1);
} else {
if (arrV1.length == 2 && arrV1[1] == 0) {
return (1);
} else {
return (-1);
}
}
}
/*
* 函数功能: 获取chromium版本号的类型
* 函数参数: 版本号的字符串
* 函数返回值:非正式,空
*/
function chromiumVersionType(version) {
var versionType = [
"", // 大版本号已知,子版本号大于等于对应的版本号
"(非正式版)" // 大版本号已知,子版本号小于对应的版本号(正式版)/大版本号大于最新版
];
var suggest = "";
var arrV1 = version.split(".");
if (parseInt(arrV1[0]) < parseInt(vi[0].normal.version.split(".")[0])) {
suggest = versionType[0];
} else if (parseInt(arrV1[0]) > parseInt(vi[vi.length - 1].normal.version.split(".")[0])) {
suggest = versionType[1];
}
for (var i = 0; i < vi.length; i++) {
if (vi[i].normal.version == "") {
suggest = versionType[1];
break;
}
var arrV2 = vi[i].normal.version.split(".");
if (parseInt(arrV1[0]) == parseInt(arrV2[0])) {
if (vi[i].normal.version!="" && cmpVersion(version, vi[i].normal.version) != -1) {
suggest = versionType[0];
} else {
suggest = versionType[1];
}
break;
}
}
return suggest;
}
// 获取chromium内核版本号的发布时间
function chromiumVersionDate(version) {
var bv = parseInt(version.split(".")[0]);
// 大版本号大于最大版本号
if (bv > vi.length + 4) {
if (vi[vi.length - 1].last.version && cmpVersion(version, vi[vi.length - 1].last.version) > 0) {
return ("此版本 Chromium 内核发布于 " + vi[vi.length - 1].last.date.replace("。", " 之后。"));
} else if (vi[vi.length - 1].normal.version && cmpVersion(version, vi[vi.length - 1].normal.version) > 0) {
return ("此版本 Chromium 内核发布于 " + vi[vi.length - 1].normal.date.replace("。", " 之后。"));
} else {
return ("此版本 Chromium 内核发布于 " + vi[vi.length - 1].first.date.replace("。", " 之后。"));
}
}
var firstVersion = vi[bv - 5].first.version;
var normalVersion = vi[bv - 5].normal.version;
var lastVersion = vi[bv - 5].last.version;
var lowerVersion = vi[0].first.version;
var upperVersion = vi[vi.length - 1].last.version;
if (cmpVersion(version, lowerVersion) == -1) {
return ("此版本 Chromium 内核发布早于 " + vi[0].first.date);
} else if (cmpVersion(version, lowerVersion) == 0) {
return ("此版本 Chromium 内核发布于 " + vi[0].first.date);
} else if (upperVersion != "" && cmpVersion(version, upperVersion) == 1) {
return "";
} else if (cmpVersion(version, firstVersion) == -1) {
return ("此版本 Chromium 内核发布早于 " + vi[bv - 5].first.date);
} else if (cmpVersion(version, firstVersion) == 0) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].first.date);
} else if (cmpVersion(version, firstVersion) == 1 &&
cmpVersion(version, normalVersion) == -1) {
if (vi[bv - 5].first.date == vi[bv - 5].normal.date) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].normal.date);
} else {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].first.date.replace("。", "") + "-" + vi[bv - 5].normal.date.replace("。", " 之间。"));
}
} else if (cmpVersion(version, firstVersion) == 1 && normalVersion == ""){
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].first.date.replace("。", "之后。"));
} else if (cmpVersion(version, normalVersion) == 0) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].normal.date);
} else if (cmpVersion(version, normalVersion) == 1 &&
cmpVersion(version, lastVersion) == -1) {
if (vi[bv - 5].normal.date == vi[bv - 5].last.date) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].normal.date);
} else {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].normal.date.replace("。", "") + "-" + vi[bv - 5].last.date.replace("。", " 之间。"));
}
} else if (cmpVersion(version, normalVersion) == 1 && lastVersion=="") {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].normal.date.replace("。", "之后。"));
} else if (cmpVersion(version, lastVersion) == 0) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].last.date);
} else if (cmpVersion(version, lastVersion) == 1) {
return ("此版本 Chromium 内核发布于 " + vi[bv - 5].last.date.replace("。", " 之后。"));
}
}
// 获取chromium版本的建议
function chromiumVersionSuggestion(version) {
var arrV1 = version.split(".");
var latestIndex = 12;
for (var i=vi.length-1; i>=0; i--) {
if (vi[i].normal.version != "") {
latestIndex = i;
break;
}
}
if (parseInt(arrV1[0]) > parseInt(vi[latestIndex].normal.version.split(".")[0])) {
return (suggestion[0]);
} else if (cmpVersion(version, vi[latestIndex].normal.version) != -1) {
return (suggestion[1]);
} else if (parseInt(arrV1[0]) == parseInt(vi[latestIndex].normal.version.split(".")[0]) &&
cmpVersion(version, vi[latestIndex].normal.version) == -1) {
return (suggestion[2]);
} else if (parseInt(arrV1[0]) == parseInt(vi[latestIndex-1].normal.version.split(".")[0]) &&
cmpVersion(version, vi[latestIndex-1].normal.version) != -1) {
return (suggestion[3]);
} else if (parseInt(arrV1[0]) == parseInt(vi[latestIndex-1].normal.version.split(".")[0]) &&
cmpVersion(version, vi[latestIndex-1].normal.version) == -1) {
return (suggestion[4]);
} else if (parseInt(arrV1[0]) < parseInt(vi[latestIndex-1].normal.version.split(".")[0]) &&
parseInt(arrV1[0]) >= 8 &&
cmpVersion(version, vi[parseInt(arrV1[0]) - 5].normal.version) != -1) {
return (suggestion[5]);
} else if (parseInt(arrV1[0]) < parseInt(vi[latestIndex-1].normal.version.split(".")[0]) &&
parseInt(arrV1[0]) >= 8 &&
cmpVersion(version, vi[parseInt(arrV1[0]) - 5].normal.version) == -1) {
return (suggestion[6]);
} else if (parseInt(arrV1[0]) < 8 &&
parseInt(arrV1[0]) >= 5 &&
cmpVersion(version, vi[parseInt(arrV1[0]) - 5].normal.version) != -1) {
return (suggestion[7]);
} else if (parseInt(arrV1[0]) < 8 &&
parseInt(arrV1[0]) >= 5 &&
cmpVersion(version, vi[parseInt(arrV1[0]) - 5].normal.version) == -1) {
return (suggestion[8]);
} else if (parseInt(arrV1[0]) < 5) {
return (suggestion[9]);
}
}
// 判断是否为chrome内核浏览器
function isChromium(userAgent) {
var chromium = "mozilla/&&applewebkit/&&chrome/&&safari/".split("&&");
for (var i = 0; i < chromium.length; i++)
if (userAgent.indexOf(chromium[i]) < 0)
return false;
return true;
}
// 判断是否为webkit内核浏览器
function isWebkit(userAgent) {
if (userAgent.indexOf("applewebkit/") < 0)
return false;
return true;
}
// 检测到chrome内核浏览器时显示
function chromiumDisplay(userAgent) {
var version = userAgent.match(/chrome\/([\d.]+)/)[1];
var versionType = chromiumVersionType(version);
var versionsObj = document.getElementById("version");
var suggestionObj = document.getElementById("suggestion");
var versionDate = chromiumVersionDate(version);
var suggestion = chromiumVersionSuggestion(version);
var versionNum = version.split(".")[0];
versionsObj.innerHTML = "版本号:" + version + "<\/strong>" + versionType;
if (versionNum >= 8 && versionType == "") {
suggestionObj.innerHTML = versionDate + "
" + suggestion;
} else {
suggestionObj.innerHTML = versionDate + "
" + suggestion + "<\/span>";
var versionDiv = document.getElementById("in");
versionDiv.style.background = "#C49259";
versionDiv.style.borderColor = "#C49259";
document.getElementById("version").style.borderBottomColor = "#9b6A33";
document.getElementById("tb").style.borderTopColor = "#D7B287";
}
}
// 检测到webkit内核浏览器时显示
function webkitDisplay(userAgent) {
var version = userAgent.match(/applewebkit\/([\d.]+)/)[1];
var versionsObj = document.getElementById("version");
versionsObj.innerHTML = "版本号:" + version + "<\/strong>";
webkitVersionUrl = webkitVersionUrl.replace("%s", version);
var suggestion = "您的浏览器使用了Webkit内核。点此查看<\/a>内核发布时间";
var suggestionObj = document.getElementById("suggestion");
suggestionObj.innerHTML = suggestion;
}
// 未检测到极速内核版本号时显示
function othersDisplay(userAgent) {
var versionsObj = document.getElementById("version");
versionsObj.innerHTML = "未能检测到极速内核版本号";
var suggestionObj = document.getElementById("suggestion");
suggestionObj.innerHTML = "请使用双核浏览器的极速模式或其他Chromium、Webkit内核浏览器进行检测。";
}
// 判断浏览器类型
function whatBrowser() {
var userAgent = navigator.userAgent.toLowerCase();
if (isChromium(userAgent)) {
chromiumDisplay(userAgent);
} else if (isWebkit(userAgent)) {
webkitDisplay(userAgent);
} else {
othersDisplay(userAgent);
}
}