278 lines
15 KiB
JavaScript
278 lines
15 KiB
JavaScript
|
var BrowserDetect = {
|
|||
|
init: function(){
|
|||
|
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
|
|||
|
this.version = this.searchVersion(navigator.userAgent) ||
|
|||
|
this.searchVersion(navigator.appVersion) ||
|
|||
|
"an unknown version";
|
|||
|
},
|
|||
|
searchString: function(data){
|
|||
|
for (var i = 0; i < data.length; i++) {
|
|||
|
var dataString = data[i].string;
|
|||
|
var dataProp = data[i].prop;
|
|||
|
this.versionSearchString = data[i].versionSearch || data[i].identity;
|
|||
|
if (dataString) {
|
|||
|
if (dataString.indexOf(data[i].subString) != -1)
|
|||
|
return data[i].identity;
|
|||
|
}
|
|||
|
else
|
|||
|
if (dataProp)
|
|||
|
return data[i].identity;
|
|||
|
}
|
|||
|
},
|
|||
|
searchVersion: function(dataString){
|
|||
|
var index = dataString.indexOf(this.versionSearchString);
|
|||
|
if (index == -1)
|
|||
|
return;
|
|||
|
return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
|
|||
|
},
|
|||
|
dataBrowser: [{
|
|||
|
string: navigator.userAgent,
|
|||
|
subString: "Chrome",
|
|||
|
identity: "Chrome"
|
|||
|
},
|
|||
|
{
|
|||
|
string: navigator.vendor,
|
|||
|
subString: "Apple",
|
|||
|
identity: "Safari"
|
|||
|
}, {
|
|||
|
prop: window.opera,
|
|||
|
identity: "Opera"
|
|||
|
}, {
|
|||
|
string: navigator.userAgent,
|
|||
|
subString: "Flock",
|
|||
|
identity: "Flock"
|
|||
|
}, {
|
|||
|
string: navigator.userAgent,
|
|||
|
subString: "Firefox",
|
|||
|
identity: "Firefox"
|
|||
|
}, {
|
|||
|
string: navigator.userAgent,
|
|||
|
subString: "MSIE",
|
|||
|
identity: "IExplorer",
|
|||
|
versionSearch: "MSIE"
|
|||
|
}]
|
|||
|
};
|
|||
|
var BrowserCompatible = {
|
|||
|
check: function(){
|
|||
|
BrowserDetect.init();
|
|||
|
if ((this.useBlackList && this.unCompatibleBrowsers[BrowserDetect.browser] && BrowserDetect.version <= this.unCompatibleBrowsers[BrowserDetect.browser]) ||
|
|||
|
(!this.useBlackList && (BrowserDetect.version < this.compatibleBrowsers[BrowserDetect.browser] || !this.compatibleBrowsers[BrowserDetect.browser]))) {
|
|||
|
if (!this.readCookie('browsercheck_dontShowAgain'))
|
|||
|
this.showWarning();
|
|||
|
}
|
|||
|
},
|
|||
|
getStyle: function(el, styleProp){
|
|||
|
var x = el;
|
|||
|
if (x.currentStyle)
|
|||
|
var y = x.currentStyle[styleProp];
|
|||
|
else
|
|||
|
if (window.getComputedStyle)
|
|||
|
var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(styleProp);
|
|||
|
return y;
|
|||
|
},
|
|||
|
createCookie: function(name, value, days){
|
|||
|
if (days) {
|
|||
|
var date = new Date();
|
|||
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
|||
|
var expires = ";expires=" + date.toGMTString();
|
|||
|
}
|
|||
|
else
|
|||
|
var expires = "";
|
|||
|
document.cookie = name + "=" + value + expires + ";path=/";
|
|||
|
},
|
|||
|
|
|||
|
readCookie: function(name){
|
|||
|
var nameEQ = name + "=";
|
|||
|
var ca = document.cookie.split(';');
|
|||
|
for (var i = 0; i < ca.length; i++) {
|
|||
|
var c = ca[i];
|
|||
|
while (c.charAt(0) == ' ')
|
|||
|
c = c.substring(1, c.length);
|
|||
|
if (c.indexOf(nameEQ) == 0)
|
|||
|
return c.substring(nameEQ.length, c.length);
|
|||
|
}
|
|||
|
return null;
|
|||
|
},
|
|||
|
|
|||
|
eraseCookie: function(name){
|
|||
|
this.createCookie(name, "", -1);
|
|||
|
},
|
|||
|
showWarning: function(){
|
|||
|
if(!this.lang){
|
|||
|
this.lang=navigator.language || navigator.browserLanguage;
|
|||
|
if(!this.langTranslations[this.lang]) this.lang="en";
|
|||
|
}
|
|||
|
var bg = document.createElement("div");
|
|||
|
bg.id = "browsercheck_bg";
|
|||
|
bg.style["background"] = "#fff";
|
|||
|
bg.style["filter"] = "alpha(opacity=90)";
|
|||
|
bg.style["-moz-opacity"] = "0.90";
|
|||
|
bg.style["opacity"] = "0.9";
|
|||
|
bg.style["position"] = "fixed";
|
|||
|
if (BrowserDetect.browser == "IExplorer" && BrowserDetect.version < 7)
|
|||
|
bg.style["position"] = "absolute";
|
|||
|
bg.style["z-index"] = "9998";
|
|||
|
bg.style["top"] = "0";
|
|||
|
bg.style["left"] = "0";
|
|||
|
bg.style["height"] = (screen.availHeight + 300) + "px";
|
|||
|
bg.style["width"] = (screen.availWidth + 300) + "px";
|
|||
|
|
|||
|
var warning_html = "";
|
|||
|
if (this.allowCancel)
|
|||
|
warning_html += '<a href="javascript:BrowserCompatible.cancel()" style="background:url('+this.images['cancel']+') no-repeat; height:15px; width:16px; position:absolute; right:10px; top:7px;" title="' + this.langTranslations[this.lang]['cancel'] + '"></a>';
|
|||
|
warning_html += '<div id="browsercheck_title" style="font-family:arial; font-size:24px; color:#000; margin:15px;">' + this.langTranslations[this.lang]['title'] + '</div>';
|
|||
|
warning_html += '<div id="browsercheck_description" style="font-family:arial; font-size:12px; color:#707070; margin:15px;">' + this.langTranslations[this.lang]['description'] + '</div>';
|
|||
|
warning_html += '<div id="browsercheck_recomendation" style="font-family:arial; font-size:12px; color:#707070; margin:15px;">' + this.langTranslations[this.lang]['recomendation'] + '</div>';
|
|||
|
for (var i = 0; i < this.offeredBrowsers.length; i++) {
|
|||
|
warning_html += '<a href="' + this.browsersList[this.offeredBrowsers[i]].link + '" title="' + this.langTranslations[this.lang][this.offeredBrowsers[i]] + '" style="height:60px; width:165px; display:block; float:left; margin:15px; text-decoration:none; background: url(' + this.browsersList[this.offeredBrowsers[i]].image + ') no-repeat;" target="_blank"> </a>';
|
|||
|
|
|||
|
}
|
|||
|
if (this.allowToHide)
|
|||
|
warning_html += '<div style="clear:both;font-family:arial; font-size:12px; color:#707070; padding:7px 15px;"><label><input type="checkbox" id="browsercheck_dontShowAgain" onclick="BrowserCompatible.dontShowAgain()" />' + this.langTranslations[this.lang]['dontShowAgain'] + '</label></div>';
|
|||
|
var warning = document.createElement("div");
|
|||
|
warning.id = "browsercheck_warning";
|
|||
|
warning.style["background"] = "url("+this.images['background']+") no-repeat";
|
|||
|
warning.style["padding"] = "2px";
|
|||
|
warning.style["width"] = "600px";
|
|||
|
warning.style["height"] = "400px";
|
|||
|
warning.style["position"] = "fixed";
|
|||
|
if (BrowserDetect.browser == "IExplorer" && BrowserDetect.version < 7)
|
|||
|
warning.style["position"] = "absolute";
|
|||
|
warning.style["z-index"] = "9999";
|
|||
|
warning.style["top"] = ((window.innerHeight || document.body.parentNode.offsetHeight) - 400) / 2 + "px";
|
|||
|
warning.style["left"] = ((window.innerWidth || document.body.parentNode.offsetWidth) - 600) / 2 + "px";
|
|||
|
warning.innerHTML = warning_html;
|
|||
|
|
|||
|
this.old_overflow_style = this.getStyle(document.body.parentNode, "overflow") || this.getStyle(document.body, "overflow");
|
|||
|
if (BrowserDetect.browser == "Opera" && this.old_overflow_style == "visible")
|
|||
|
this.old_overflow_style = "auto";
|
|||
|
document.body.parentNode.style["overflow"] = "hidden";
|
|||
|
document.body.style["overflow"] = "hidden";
|
|||
|
|
|||
|
document.body.appendChild(bg);
|
|||
|
document.body.appendChild(warning);
|
|||
|
|
|||
|
if (document.addEventListener) {
|
|||
|
document.addEventListener('resize', this.warningPosition, false);
|
|||
|
}
|
|||
|
else {
|
|||
|
document.attachEvent('onresize', this.warningPosition);
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
warningPosition: function(){
|
|||
|
var warning = document.getElementById('browsercheck_warning');
|
|||
|
warning.style["top"] = ((window.innerHeight || document.body.parentNode.offsetHeight) - 400) / 2 + "px";
|
|||
|
warning.style["left"] = ((window.innerWidth || document.body.parentNode.offsetWidth) - 600) / 2 + "px";
|
|||
|
},
|
|||
|
dontShowAgain: function(){
|
|||
|
var inpDontShowAgain = document.getElementById('browsercheck_dontShowAgain').checked;
|
|||
|
var dontShowAgain = this.readCookie('browsercheck_dontShowAgain');
|
|||
|
if (inpDontShowAgain) {
|
|||
|
this.createCookie('browsercheck_dontShowAgain', 'on', this.cookiesExpire);
|
|||
|
}
|
|||
|
else {
|
|||
|
this.eraseCookie('browsercheck_dontShowAgain');
|
|||
|
}
|
|||
|
},
|
|||
|
cancel: function(){
|
|||
|
var bg = document.getElementById('browsercheck_bg');
|
|||
|
var warning = document.getElementById('browsercheck_warning');
|
|||
|
bg.parentNode.removeChild(bg);
|
|||
|
warning.parentNode.removeChild(warning);
|
|||
|
document.body.parentNode.style["overflow"] = this.old_overflow_style;
|
|||
|
if (BrowserDetect.browser != "IExplorer")
|
|||
|
document.body.style["overflow"] = this.old_overflow_style;
|
|||
|
document.onresize = this.resize_function;
|
|||
|
},
|
|||
|
old_overflow_style: "",
|
|||
|
resize_function: null,
|
|||
|
allowCancel: false,
|
|||
|
allowToHide: false,
|
|||
|
cookiesExpire: 1,
|
|||
|
images : {
|
|||
|
'background':"img/bg.gif",
|
|||
|
'cancel':"img/cancel.gif"
|
|||
|
},
|
|||
|
useBlackList: false,
|
|||
|
compatibleBrowsers: {
|
|||
|
"Opera": 9.25,
|
|||
|
"Firefox": 2,
|
|||
|
"IExplorer": 7,
|
|||
|
"Safari": 525.17,
|
|||
|
"Flock": 1.1,
|
|||
|
"Chrome": 1
|
|||
|
},
|
|||
|
unCompatibleBrowsers: {
|
|||
|
"IExplorer": 6
|
|||
|
},
|
|||
|
offeredBrowsers: ["Chrome","Firefox", "Flock", "Safari", "IExplorer", "Opera"],
|
|||
|
browsersList: {
|
|||
|
"Chrome": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/chrome.gif",
|
|||
|
"link": "http://www.google.com/chrome/"
|
|||
|
},
|
|||
|
"Opera": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/opera.gif",
|
|||
|
"link": "http://www.opera.com/products/desktop/"
|
|||
|
},
|
|||
|
"Firefox": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/firefox.gif",
|
|||
|
"link": "http://www.mozilla-europe.org/"
|
|||
|
},
|
|||
|
"IExplorer": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/iexplorer.gif",
|
|||
|
"link": "http://www.microsoft.com/windows/internet-explorer/download-ie.aspx"
|
|||
|
},
|
|||
|
"Safari": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/safari.gif",
|
|||
|
"link": "http://www.apple.com/safari/"
|
|||
|
},
|
|||
|
"Flock": {
|
|||
|
"image": "http://www.goodbyeie6.org.ua/flock.gif",
|
|||
|
"link": "http://www.flock.com/"
|
|||
|
}
|
|||
|
},
|
|||
|
lang: "",
|
|||
|
langTranslations: {
|
|||
|
"uk": {
|
|||
|
"title": "Несумісний браузер",
|
|||
|
"description": "Ваш браузер вже застарів, тому в ньому немає всіх необхідних функцій для коректної роботи веб-сайтів. Сучасні веб-сайти створюються, щоб бути максимально зручними та максимально ефективними для людини, а разом із удосконаленням сайтів покращуються браузери. Крім цього, з розвитком інтернет-комерції, зростає кількість зловмисників та хакерських атак; використання найновіших версій браузерів - хороший спосіб вберегти свій комп'ютер.",
|
|||
|
"recomendation": "Ми рекомендуємо використовувати останню версію одного із наступних браузерів:",
|
|||
|
"cancel": "Закрити попередження",
|
|||
|
"dontShowAgain": "Не показувати це попередження наступного разу",
|
|||
|
"Flock": "Браузер Flock спеціалізований для користувачів різноманітних соціальних мереж. \nВін оснований на тому ж двигуні що й Firefox, тому демонструє таку ж стабільність та корекність роботи.",
|
|||
|
"Firefox": "На сьогоднішній день найпопулярніший браузер у світі. \nЗагальне число користувачів браузера Firefox становить 40%.",
|
|||
|
"IExplorer": "Браузер Internet Explorer від компанії Microsoft з 7-ї версії вийшов на новий рівень. \nПроте все ж поступається за коректністю роботи іншим браузерам.",
|
|||
|
"Safari": "Популярний браузер від компанії Apple. \nЗ версії 3.1 демонструє достатню стабільність, за що й потрапив до цього списку.",
|
|||
|
"Opera": "Браузер Opera користується популярністю в Європі, але великі компанії досі його ігнорують. \nOpera має низку недоліків, проте стабільно удосконалюється.",
|
|||
|
"Chrome": "Браузер Chrome - молодий браузер створений компанією Google. \nРозробники приділили особливу увагу зручності браузера, і разом з тим він ні скільки не поступається за коректністю роботи."
|
|||
|
},
|
|||
|
"ru": {
|
|||
|
"title": "Несовместимый браузер",
|
|||
|
"description": "Ваш браузер уже устарел, потому в нем нет всех необходимых функций для корректной работы веб-сайтов. Современные веб-сайты создаются, чтобы быть максимально удобными и максимально эффективными для человека, а вместе с усовершенствованием сайтов улучшаются браузеры. Кроме этого, с развитием интернет-комерции, растет количество злоумышленников и хакерских атак; использование новейших версий браузеров - хороший способ уберечь свой компьютер.",
|
|||
|
"recomendation": "Мы рекомендуем использовать последнюю версию одного из следующих браузеров:",
|
|||
|
"cancel": "Закрыть предупреждение",
|
|||
|
"dontShowAgain": "Не показывать это предупреждение вновь",
|
|||
|
"Flock": "Браузер Flock специализирован для пользователей разнообразных социальных сетей. \nОн основан на том же движке что и Firefox, потому демонстрирует такую же стабильность и коректность работы.",
|
|||
|
"Firefox": "На сегодняшний день самый популярный браузер в мире. \nОбщее число пользователей браузера Firefox составляет 40%.",
|
|||
|
"IExplorer": "Браузер Internet Explorer от компании Microsoft после 7-и версии вышел на новый уровень. \nОднако все же уступает за корректностью работы другим браузерам.",
|
|||
|
"Safari": "Популярный браузер от компании Apple. \nПосле версии 3.1 демонстрирует достаточную стабильность, за что и попал к этому списку.",
|
|||
|
"Opera": "Браузер Opera пользуется популярностью в Европе, но большие компании до сих пор его игнорируют. \nOpera имеет ряд недостатков, однако стабильно совершенствуется.",
|
|||
|
"Chrome": "Браузер Chrome - молодой браузер созданный компанией Google. \nРазработчики уделили особое внимание удобству браузера, и вместе с тем он ни сколько не уступает по коректнистю работы."
|
|||
|
},
|
|||
|
"en": {
|
|||
|
"title": "Desteklenmeyen Tarayıcı!",
|
|||
|
"description": "Tarayıcınız web sayfamız tarafından artık desteklenmiyor. Bu da demek oluyor ki sayfamızı verimli olarak kullanamayacaksınız. Lütfen aşağıdaki tarayıcılardan birini kurun.",
|
|||
|
"recomendation": "",
|
|||
|
"cancel": "Bu uyarıyı kapat",
|
|||
|
"dontShowAgain": "Bu uyarıyı tekrar gösterme",
|
|||
|
"Firefox": "",
|
|||
|
"Flock": "",
|
|||
|
"IExplorer": "",
|
|||
|
"Safari": "",
|
|||
|
"Opera": "",
|
|||
|
"Chrome" : ""
|
|||
|
}
|
|||
|
}
|
|||
|
}
|