Created
September 4, 2018 17:48
-
-
Save n0ncetonic/de1aea9ac257b1b08f4e26d289969215 to your computer and use it in GitHub Desktop.
Cashback Ext Detection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var detectExt = { | |
is_install: "", | |
/** | |
* поиск расширения в chrome | |
* @param onload | |
* @param onerror | |
*/ | |
detect_ext_chrome: function (onload, onerror) { | |
var detect = function (base, if_installed, if_not_installed) { | |
var s = document.createElement('script'); | |
s.onerror = if_not_installed; | |
s.onload = if_installed; | |
document.body.appendChild(s); | |
s.src = base + '/js/background/Api.js '; | |
}; | |
if ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) && (navigator.userAgent.toLowerCase().indexOf('opr/') < 0)) { | |
var alibonus_ext_id = "dbfipcjecamggjfabeaclacjoohfjhhn"; | |
detect('chrome-extension://' + alibonus_ext_id, onload, onerror); | |
} | |
}, /** | |
* поиск расширения в yandex | |
* @param onload | |
* @param onerror | |
*/ | |
detect_ext_yandex: function (onload, onerror) { | |
var detect = function (base, if_installed, if_not_installed) { | |
var s = document.createElement('script'); | |
s.onerror = if_not_installed; | |
s.onload = if_installed; | |
document.body.appendChild(s); | |
s.src = base + '/js/background/Api.js '; | |
}; | |
if ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) && (navigator.userAgent.toLowerCase().indexOf('opr/') < 0)) { | |
var alibonus_ext_id = "dbfipcjecamggjfabeaclacjoohfjhhn"; | |
detect('chrome-extension://' + alibonus_ext_id, onload, onerror); | |
} | |
}, | |
/** | |
* поиск расширения в firefox | |
* @param onload | |
* @param onerror | |
*/ | |
detect_ext_firefox: function (onload, onerror) { | |
setTimeout(function() { | |
if ($('#sad654sd7ef12eafw8e97fwe123fweq67fwe31as').length > 0) { | |
onload(); | |
} else { | |
onerror(); | |
} | |
}, 1500); | |
}, | |
/** | |
* поиск расширения в opera | |
* @param onload | |
* @param onerror | |
*/ | |
detect_ext_opera: function (onload, onerror) { | |
var detect = function (base, if_installed, if_not_installed) { | |
var s = document.createElement('script'); | |
s.onerror = if_not_installed; | |
s.onload = if_installed; | |
document.body.appendChild(s); | |
s.src = base + '/js/background/Api.js '; | |
}; | |
if (navigator.userAgent.toLowerCase().indexOf('opr/') > -1) { | |
var alibonus_ext_id = "gnmpkjcpdaneoddcilgcoobhkokdbfcd"; | |
detect('chrome-extension://' + alibonus_ext_id, onload, onerror); | |
} | |
}, | |
/** | |
* поиск расширения в safari | |
* @param onload | |
* @param onerror | |
*/ | |
detect_ext_safari: function (onload, onerror) { | |
setTimeout(function () { | |
if ($('.safari-extension-installed.hidden').length > 0) { | |
onload(); | |
} else { | |
onerror(); | |
} | |
}, 1500); | |
}, | |
/** | |
* проверка на наличие установленного расширения в конкретном браузере | |
* @param browser | |
* @returns {boolean} | |
*/ | |
init: function (browser, onload, onerror) { | |
onload = onload || function () { | |
}; | |
onerror = onerror || function () { | |
}; | |
browser = browser || "none"; | |
browser = browser.toString().toLowerCase(); | |
// если метод не найден | |
if (this["detect_ext_" + browser] === undefined) { | |
onerror(); | |
detectExt.is_install = ""; | |
return false; | |
} | |
if (this.is_install !== "") { | |
return this.is_install; | |
} | |
// обращаемся к методу и проверяем установлен ли ext | |
this["detect_ext_" + browser](function () { | |
onload(); | |
detectExt.is_install = true; | |
}, function () { | |
onerror(); | |
detectExt.is_install = false; | |
}); | |
return detectExt.is_install; | |
} | |
}; | |
var browserList = { | |
install_links: { | |
'Firefox': 'https://addons.mozilla.org/ru/firefox/addon/megabonus_cashback/?src=cb-dl-updated', | |
'Safari': 'https://safari-extensions.apple.com/details/?id=com.megabonus.megabonusextension-5GA3F5H498', | |
'Opera': 'https://addons.opera.com/ru/extensions/details/alibonus-vozvrashchai-10-s-aliexpress/?display=ru-RU', | |
'Chrome': 'https://chrome.google.com/webstore/detail/alibonus-%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B9-10%25-%D1%81/dbfipcjecamggjfabeaclacjoohfjhhn?hl=ru', | |
'Yandex': 'https://chrome.google.com/webstore/detail/alibonus-%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B9-10%25-%D1%81/dbfipcjecamggjfabeaclacjoohfjhhn?hl=ru' | |
}, | |
reviews_links: { | |
'Firefox': 'https://addons.mozilla.org/ru/firefox/addon/megabonus_cashback/reviews/', | |
'Opera': 'https://addons.opera.com/ru/extensions/details/alibonus-vozvrashchai-10-s-aliexpress/?display=ru-RU#feedback-container', | |
'Chrome': 'https://chrome.google.com/webstore/detail/alibonus-%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B9-10%25-%D1%81/dbfipcjecamggjfabeaclacjoohfjhhn/reviews?hl=ru', | |
'Yandex': 'https://chrome.google.com/webstore/detail/alibonus-%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B9-10%25-%D1%81/dbfipcjecamggjfabeaclacjoohfjhhn/reviews?hl=ru' | |
}, | |
event_class: { | |
'Firefox': 'firefox_click', | |
'Safari': 'safari_click', | |
'Opera': 'opera_click', | |
'Chrome': 'chrome_click', | |
'Yandex': 'yandexb_click' | |
}, | |
browsers_logos: { | |
'Firefox': '/images/user/ff.png', | |
'Safari': '/images/user/safari.png', | |
'Opera': '/images/user/opera.png', | |
'Chrome': '/images/user/chrome.png', | |
'Yandex': '/images/user/yb.png' | |
}, | |
browsers_labels: { | |
'Firefox': 'FireFox', | |
'Safari': 'Safari', | |
'Opera': 'Opera', | |
'Chrome': 'Chrome', | |
'Yandex': 'Yandex' | |
}, | |
buildList: function(parent_obj, type, label_flag){ | |
if(typeof label_flag === 'undefined') | |
label_flag = false; | |
var list = $('<div/>', {class: 'built-browser-list'}), | |
browsers_links, | |
link; | |
switch(type){ | |
case 'reviews': | |
browsers_links = browserList.reviews_links; | |
break; | |
case 'install': | |
browsers_links = browserList.install_links; | |
break; | |
default: | |
browsers_links = browserList.install_links; | |
break; | |
} | |
$.each(installExt.detectInstallArr, function(index, value){ | |
if(typeof browsers_links[value] !== 'undefined'){ | |
list.append(link = $('<button/>', { | |
class: browserList.event_class[value], | |
click: function(){ | |
window.open(browsers_links[value]) | |
} | |
}) | |
.append($('<img/>', { | |
src: browserList.browsers_logos[value] | |
})) | |
); | |
if(label_flag){ | |
link.append( | |
$('<span/>', {text: browserList.browsers_labels[value]}) | |
) | |
} | |
} | |
}); | |
if(label_flag){ | |
if(typeof parent_obj.attr('data-width') !== 'undefined'){ | |
list.find('img').css({ | |
'width': parent_obj.attr('data-width'), | |
'height': parent_obj.attr('data-width') | |
}); | |
list.find('button').css({ | |
'width': 2 * parent_obj.attr('data-width') | |
}); | |
} | |
} | |
else{ | |
if(typeof parent_obj.attr('data-width') !== 'undefined'){ | |
list.find('button').css({ | |
'width': parent_obj.attr('data-width'), | |
'height': parent_obj.attr('data-width') | |
}); | |
} | |
if(typeof parent_obj.attr('data-margin') !== 'undefined'){ | |
list.find('button').css('margin', parent_obj.attr('data-margin')); | |
} | |
} | |
parent_obj.empty().html(list); | |
} | |
}; | |
var installExt = { | |
actualBrowser: {}, | |
/** | |
* имя браузера | |
*/ | |
browserName: "", | |
/** | |
* мобильный постфикс | |
*/ | |
mobileName: "", | |
/** | |
* ссылка на скачивание Ext | |
*/ | |
installLink: '#', | |
/** | |
* ссылка на отзывы | |
*/ | |
reviewsLink: '#', | |
/** | |
* проверяет на мобильный браузер | |
* @returns {boolean} | |
*/ | |
detectMobile: function () { | |
var ua = navigator.userAgent; | |
if (ua.match(/Android/i) || | |
ua.match(/webOS/i) || | |
ua.match(/iPhone/i) || | |
ua.match(/iPad/i) || | |
ua.match(/iPod/i) || | |
ua.match(/BlackBerry/i) || | |
ua.match(/Windows Phone/i)) { | |
return true; | |
} | |
return false; | |
}, | |
detectInstall: function (onload, onerror) { | |
// инициируем функции проверки на установленный Extension | |
if (this.detectExtension === undefined) this.detectExtension = detectExt; | |
this.detectExtension.init(this.detectBrowser(false), onload, onerror); | |
}, | |
/** | |
* возвращает наименование браузера | |
* @returns {string} | |
*/ | |
detectBrowser: function (printMob) { | |
printMob = printMob || true; | |
this.mobileName = (printMob && this.detectMobile()) ? " - from Mobile" : ""; | |
var ua = navigator.userAgent; | |
this.browserName = navigator.appName; | |
// Opera 15+, | |
if ((verOffset = ua.indexOf("OPR/")) != -1) | |
this.browserName = "Opera"; | |
//Edge | |
else if (ua.indexOf('Edge/') !== -1) { | |
this.browserName = 'Edge'; | |
} | |
//Yandex | |
else if (ua.indexOf('YaBrowser/') !== -1) { | |
this.browserName = 'Yandex'; | |
} | |
//Google Chrome | |
else if ((verOffset = ua.indexOf("Chrome")) != -1) | |
this.browserName = "Chrome"; | |
// older Opera, | |
else if ((verOffset = ua.indexOf("Opera")) != -1) | |
this.browserName = "Opera"; | |
// Microsoft IE | |
else if ((verOffset = ua.indexOf("MSIE")) != -1) | |
this.browserName = "Microsoft Internet Explorer"; | |
//Apple Safari | |
else if ((verOffset = ua.indexOf("Safari")) != -1) | |
this.browserName = "Safari"; | |
//Firefox | |
else if ((verOffset = ua.indexOf("Firefox")) != -1) | |
this.browserName = "Firefox"; | |
//other browsers | |
else | |
this.browserName = "Unknown"; | |
return this.browserName + this.mobileName; | |
}, | |
/** | |
* браузеры которые мы проверяем на установленное расширение, и в которые будем менять кнопки | |
*/ | |
detectInstallArr: [ | |
'Firefox', | |
'Safari', | |
'Chrome', | |
'Opera', | |
'Yandex' | |
], | |
/** | |
* возвращает ссылку для скачивания расширения | |
* @returns {string} | |
*/ | |
getLinkForBrowser: function () { | |
switch (this.detectBrowser()) { | |
case 'Firefox': | |
this.installLink = browserList.install_links.Firefox; | |
break; | |
case 'Safari': | |
this.installLink = browserList.install_links.Safari; | |
break; | |
case 'Opera': | |
this.installLink = browserList.install_links.Opera; | |
break; | |
case 'Chrome': | |
case 'Yandex': | |
this.installLink = browserList.install_links.Chrome; | |
break; | |
default: | |
// console.warn('none Browser Link'); | |
} | |
return this.installLink; | |
}, | |
/** | |
* проверяе нужно ли данный браузер проверять на расширение | |
* @returns {boolean} | |
*/ | |
isBrowserNeedCheckForExtension: function () { | |
Array.prototype.contains = function (needle) { | |
for (i in this) { | |
if (this[i] == needle) return true; | |
} | |
return false; | |
}; | |
return this.detectInstallArr.contains(this.detectBrowser(false)); | |
}, | |
/** | |
* проверяет на авторизацию | |
*/ | |
isAuthorisation: function () { | |
return !($('.my-settings .holder-text').text() == ""); | |
}, | |
init: function () { | |
// определяем ссылку для скачивания расширения | |
this.getLinkForBrowser(); | |
// если данные браузер не указан в detectInstallArr - выходим | |
if (!this.isBrowserNeedCheckForExtension()) { | |
// если юзер не авторизован | |
if (this.isAuthorisation() && window.location.pathname == '/extension') { | |
$('.installext').remove() | |
} | |
// меняем кнопки содержащие класс installext | |
// console.log('меняем кнопки содержащие класс installext') | |
this.changeHtml.installext_ClassModify(); | |
// } | |
return false; | |
} | |
// если мобильный браузер | |
if (this.detectMobile()) { | |
$('#bannerInstall').find('a').remove(); | |
// удаляет класс installext в мобильной версии браузера при залогиненном пользователе | |
if (this.isAuthorisation()) { | |
$('.pr-like').removeClass('installext'); | |
} | |
// console.log('мобильный браузер - выход') | |
return; | |
} | |
// проверка на установленное расширение | |
installExt.detectInstall( | |
// расширение установлено | |
function () { | |
installExt.isInstalledExt(); | |
}, | |
// расширение не установлено | |
function () { | |
installExt.noInstalledExt(); | |
} | |
) | |
}, | |
/** | |
* расширение не установлено | |
*/ | |
noInstalledExt: function () { | |
// console.log("нет расширения") | |
// пользователь авторизован | |
if (this.isAuthorisation()) { | |
// console.log("пользователь авторизован"); | |
// удаляет класс installext в мобильной версии браузера при залогиненном пользователе | |
$('.pr-like').removeClass('installext'); | |
$('.link-shop a').removeClass('installext'); | |
// запускаем следящий в цикле метод добавления ссылок на установку расширения | |
installExt.changeHtml.addLinkToExtensionInstall(); | |
this.addInstallEvenst(); | |
} | |
// пользователь не авторизован | |
else { | |
//console.log("пользователь не авторизован"); | |
// запускаем следящий в цикле метод добавления ссылок на установку расширения | |
// installExt.changeHtml.installext_ClassModify(); | |
this.addInstallEvenst(); | |
} | |
$('.installext-before').text(js_installext_data.install_extension); | |
}, | |
addInstallEvenst:function(){ | |
$('.installext-before,.installext').removeAttr('data-toggle').removeAttr('data-target'); | |
$(document).on('click', '.installext, .installext-before', function (e) { | |
e.preventDefault(); | |
e.stopPropagation(); | |
// console.log(654) | |
// инициируем установку расширения | |
installExt.changeHtml.extensionInstallation(); | |
}); | |
}, | |
/** | |
* расширение установлено | |
*/ | |
isInstalledExt: function () { | |
console.log("есть расширение"); | |
// пользователь авторизован | |
if (this.isAuthorisation()) { | |
this.staticShow(); | |
this.buttonInstallExtLand(); | |
} | |
// пользователь не авторизован | |
else { | |
// console.log("пользователь не авторизован"); | |
// инициализируем кнопки авторизации вместо кнопок активации | |
installExt.changeHtml.addLinkToExtensionToAuth(); | |
installExt.changeHtml.changeText(); | |
// с ним не работают кнокпки фида | |
// installExt.changeHtml.installext_before_ClassModify(); | |
} | |
return 1; | |
}, | |
/** | |
* вместо кнопок установки показываем блок share | |
*/ | |
staticShow: function () { | |
// console.log("показать вместо кнокпи статистику"); | |
$('.economical-expansion .installext').css('display', 'none'); | |
$('.share').css('display', 'block'); | |
}, | |
/** | |
* события для лендинга расширений | |
* /extension | |
*/ | |
buttonInstallExtLand: function () { | |
// console.log(window.location.pathname) | |
if (window.location.pathname == '/extension') { | |
installExt.changeHtml.addLinkToExtensionInstall(); | |
} | |
}, | |
/** | |
* содержит методы изменения DOM | |
*/ | |
changeHtml: { | |
/** | |
* меняет кнопки содержащие класс installext | |
*/ | |
installext_ClassModify: function () { | |
if (!installExt.isAuthorisation()) { | |
installExt.changeHtml.changeText(); | |
var a; | |
$('.installext').each(function (index) { | |
if ($(this).attr('class').indexOf('btn-holder') > -1 || $(this).parent().attr('class').indexOf('btn-holder') > -1) { | |
var txt = ($.trim($(this).text()).length > 0) ? $(this).text() : js_installext_data.main_landing_login_modal_register; | |
if(!$(this).find('.link-expansion')){ | |
$(this).empty().append(a = $('<a/>', { | |
text: txt, | |
class: 'link-expansion' | |
})); | |
if (window.location.pathname == '/extension') { | |
a.addClass('btn btn-default') | |
} | |
} | |
} | |
if (!$(this).hasClass('linkIsAdd')) { | |
$(this) | |
.addClass('linkIsAdd') | |
.unbind('click') | |
.attr('data-toggle', 'modal') | |
.attr('data-target', '#register-modal') | |
.removeClass('installext-before'); | |
} | |
}); | |
// итеративно | |
setTimeout(installExt.changeHtml.installext_ClassModify, 1500); | |
} | |
}, | |
/** | |
* изменяет тексты на регистрацию | |
*/ | |
changeText: function () { | |
if(window.location.pathname.indexOf('shop/') >= 0) { | |
$('.shop-card .installext').attr('data-target', '#login-modal'); | |
return; | |
} | |
$('.header-top .btn-expansion').removeClass('installext-before'); | |
if ($('a').is('.btn_in')) { | |
$('.installext button, .installext a,.installext span').text(js_installext_data.main_landing_login_modal_register) | |
.attr('data-target', '#register-modal'); | |
} | |
else if ($('div').is('.btn_in')) { | |
$('.link-expansion').text(js_installext_data.main_landing_login_modal_register).parent() | |
.attr('data-target', '#register-modal'); | |
} | |
else { | |
$('.installext[class!=btn_in]').text(js_installext_data.main_landing_login_modal_register) | |
.attr('data-target', '#register-modal'); | |
} | |
if(window.location.pathname == '/'){ | |
$('button.installext').text(js_installext_data.main_landing_login_modal_register) | |
.attr('data-target', '#register-modal'); | |
} | |
}, | |
/** | |
* добавляет окно авторизации | |
*/ | |
addModalLogin: function () { | |
$('.installext').each(function (index) { | |
if (!$(this).hasClass('linkIsAdd')) { | |
$(this) | |
.addClass('linkIsAdd') | |
// .unbind('click') | |
.attr('data-toggle', 'modal') | |
// .attr('data-target', '#login-modal') | |
.removeClass('installext-before') | |
.removeClass('installext') | |
; | |
if($(this).hasClass('installext-index')) { | |
$(this).addClass('installext') | |
$(this).attr('data-target', '#register-modal'); | |
} | |
} | |
}); | |
}, | |
/** | |
* следящий в цикле метод добавления ссылок на установку расширения | |
* добавляет ссылки на установку расширения | |
*/ | |
addLinkToExtensionToAuth: function () { | |
// сделано для объектов генерящихся в JS | |
// console.log("сделано для объектов генерящихся в JS"); | |
if ($('.installext').length > $('.linkIsAdd').length) { | |
$('.installext').attr('href', this.installLink); | |
} | |
// добавляет евент на вызов окна авторизации | |
installExt.changeHtml.addModalLogin(); | |
// итеративно | |
setTimeout(installExt.changeHtml.addLinkToExtensionToAuth, 1500); | |
}, | |
/** | |
* следящий в цикле метод добавления евента на окно авторизации | |
* добавляет евенты на окно авторизации | |
*/ | |
addLinkToExtensionInstall: function () { | |
// console.log('addLinkToExtensionInstall') | |
// сделано для объектов генерящихся в JS | |
if ($('.installext').length > $('.linkIsAdd').length) { | |
$('.installext').attr('href', this.installLink).addClass('linkIsAdd'); | |
} | |
// подмена кнопок на ссылки | |
$('.installext').each(function (index) { | |
if ($(this).prop("tagName") !== 'A' || $(this).attr('href') !== installExt.installLink) { | |
var btn = $(this); | |
$(this).replaceWith($('<a/>', { | |
class: btn.attr('class'), | |
html: btn.html(), | |
href: installExt.installLink, | |
target: '_blank' | |
})); | |
} | |
}); | |
// добавляет евент на вызов окна авторизации | |
installExt.changeHtml.addModalLogin(); | |
// итеративно | |
setTimeout(installExt.changeHtml.addLinkToExtensionInstall, 1500); | |
}, | |
/** | |
* устанавливает расширение | |
* @returns {string} | |
*/ | |
extensionInstallation: function () { | |
var res = ''; | |
var browser = installExt.detectBrowser(false); | |
if (navigator.userAgent.indexOf('Mac') != -1) { | |
$('.continue-label-01 .arrow').css('left', '50%'); | |
} | |
if (browser === 'Chrome' || browser === 'Yandex') { | |
installExt.events.installExt.chrome(); | |
} | |
if (browser === 'Opera') { | |
installExt.events.installExt.opera(); | |
} | |
if (browser === 'Firefox') { | |
installExt.events.installExt.firefox(); | |
} | |
if (browser === 'Safari') { | |
installExt.events.installExt.safari(); | |
} | |
return res; | |
} | |
}, | |
/** | |
* события кликов | |
*/ | |
events: { | |
authorisationWindowShow: function () { | |
}, | |
/** | |
* устанавливает Extension | |
*/ | |
installExt: { | |
opera: function () { | |
$('.overlay-bg').show().css({ | |
'height': $(document).height() + $('footer').height() | |
}); | |
$('.continue-label-01').show(); | |
var id = 'gnmpkjcpdaneoddcilgcoobhkokdbfcd'; | |
try { | |
opr.addons.installExtension(id, function () { | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
res = 'ok'; | |
}, function (errorMessage) { | |
console.log(errorMessage); | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
res = 'error'; | |
// window.open('https://addons.opera.com/ru/extensions/details/alibonus-vozvrashchai-10-s-aliexpress', '_self'); | |
}); | |
} | |
catch (err) { | |
console.log(err.name + ":" + err.message + "; stack: " + err.stack); | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
window.open('https://addons.opera.com/ru/extensions/details/alibonus-vozvrashchai-10-s-aliexpress', '_self'); | |
} | |
}, | |
chrome: function () { | |
$('.overlay-bg').show().css({ | |
'height': $(document).height() + $('footer').height() | |
}); | |
$('.continue-label-01').show(); | |
try { | |
chrome.webstore.install('', function () { | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
return 'ok'; | |
}, function (error_message) { | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
return 'error'; | |
}); | |
} | |
catch (err) { | |
// console.log(err.name + ":" + err.message + "; stack: " + err.stack); | |
$('.continue-label-01').hide(); | |
$('.overlay-bg').hide(); | |
window.open('https://chrome.google.com/webstore/detail/dbfipcjecamggjfabeaclacjoohfjhhn', '_self'); | |
} | |
}, | |
firefox: function () { | |
window.open(installExt.getLinkForBrowser(), '_blank'); | |
}, | |
safari: function () { | |
window.open(installExt.getLinkForBrowser()); | |
} | |
} | |
} | |
}; | |
$(function () { | |
// $('body').append($('<div/>',{id:"sad654sd7ef12eafw8e97fwe123fweq67fwe31as"})); // эмуляция установленного расширения | |
installExt.init(); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function () { | |
"use strict"; | |
$(".breadcrumb").hide().css("opacity", "0").css("height", "0"); | |
var tracking_url = $("#RedirectUrl").val(), | |
isAuth = $("#IsAuth").val(); | |
window.onload = function() { | |
var tp = document.getElementById('tracking-protection'); | |
var tpEnabled = false; | |
var cbExtEnabled = false; | |
var adware = { | |
detected: false | |
}; | |
var knownAdware = { | |
'alitools': { | |
'title': 'AliTools', | |
'info': 'AliExpress Tools (alitools.io)' | |
}, | |
'ss': { | |
'title': 'The Safe Surfing', | |
'info': 'The Safe Surfing (safesurfing.me)' | |
} | |
} | |
tp.innerHTML = '<img id="beacon" style="display:none" src="//apps.facebook.com/favicon.ico">'; | |
var beacon = document.getElementById('beacon'); | |
//beacon.addEventListener('load', function() {}); | |
beacon.addEventListener('error', | |
function() { | |
tpEnabled = true; | |
}); | |
detectPrivateMode(); | |
function isIE10OrLater(user_agent) { | |
var ua = user_agent.toLowerCase(); | |
if (ua.indexOf('msie') === 0 && ua.indexOf('trident') === 0) { | |
return false; | |
} | |
var match = /(?:msie|rv:)\s?([\d\.]+)/.exec(ua); | |
if (match && parseInt(match[1], 10) >= 10) { | |
return true; | |
} | |
return false; | |
} | |
function detectPrivateMode() { | |
if (window.webkitRequestFileSystem && /Vivaldi/.test(window.navigator.userAgent)) { | |
window.webkitRequestFileSystem( | |
window.TEMPORARY, | |
1, | |
function() { | |
tpEnabled = true; | |
}, | |
function(e) { | |
tpEnabled = false; | |
} | |
); | |
} else if (window.webkitRequestFileSystem) { | |
window.webkitRequestFileSystem( | |
window.TEMPORARY, | |
1, | |
function() { | |
tpEnabled = false; | |
}, | |
function(e) { | |
tpEnabled = true; | |
} | |
); | |
} else if (window.indexedDB && /Firefox/.test(window.navigator.userAgent)) { | |
var db; | |
try { | |
db = window.indexedDB.open('test'); | |
} catch (e) { | |
tpEnabled = true; | |
} | |
} else if (isIE10OrLater(window.navigator.userAgent)) { | |
tpEnabled = false; | |
try { | |
if (!window.indexedDB) { | |
tpEnabled = true; | |
} | |
} catch (e) { | |
tpEnabled = true; | |
} | |
} else if (window.localStorage && /Safari/.test(window.navigator.userAgent)) { | |
try { | |
window.localStorage.setItem('test', 1); | |
} catch (e) { | |
tpEnabled = true; | |
} | |
if (typeof tpEnabled === 'undefined') { | |
tpEnabled = false; | |
window.localStorage.removeItem('test'); | |
} | |
} | |
} | |
cbExtEnabled = false; | |
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); | |
var isFF = /Firefox/.test(navigator.userAgent) && /Mozilla/.test(navigator.appCodeName); | |
if (isChrome) detectExt(); | |
if (isChrome) | |
detectResource('chrome-extension://eenflijjbchafephdplkdmeenekabdfb/fonts/OpenSans-Light.woff2', | |
'alitools', | |
detected); | |
if (isFF) FFdetectExt(); | |
if (navigator.mimeTypes["application/x-safe-surfing"]) { | |
adware.detected = true; | |
adware.nfo = knownAdware['ss']; | |
} | |
function detected(title) { | |
adware.detected = true; | |
adware.nfo = knownAdware[title]; | |
} | |
function detectResource(url, item, cb) { | |
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', url, true); | |
// xhr.responseType = "arraybuffer"; | |
xhr.onload = function(evt) { | |
if (xhr.status == 200) cb(item); | |
}; | |
xhr.onerror = function(evt) { | |
//console.log("Error downloading resource from "+url); | |
}; | |
xhr.send(null); | |
} | |
function FFdetectExt() { | |
function d(fn) { | |
var im = document.createElement("img"); | |
im.addEventListener("load", | |
function(e) { | |
cbExtEnabled = true; | |
}, | |
false); | |
im.setAttribute("src", fn); | |
} | |
d("chrome://letyshops/content/images/btn/logo24.png"); | |
$('[data-j="howtoext"]').attr("href", 'https://support.mozilla.org/ru/kb/udalenie-dopolnenij'); | |
} | |
function detectExt() { | |
var conflicts = [ | |
['letyshops', 'lphicbbhfmllgmomkkhjfkpbdlncafbn', 'images/btn/logo18.png'], | |
['alibonus', 'dbfipcjecamggjfabeaclacjoohfjhhn', 'icons/info.png'], | |
['kopikot', 'iehhgmkphdjocnjjobeoccffiiclcmli', 'img/search.png'] | |
]; | |
function detectExt(extId, fn, nfo) { | |
var img = new Image(); | |
img.src = "chrome-extension://" + extId + "/" + fn; | |
img.onload = function() { cbExtEnabled = true; }; | |
} | |
for (var i = 0; i < conflicts.length; i++) { | |
detectExt(conflicts[i][1], conflicts[i][2], conflicts[i][0]); | |
if (cbExtEnabled) break; | |
} | |
} | |
top.setTimeout(function() { | |
if (typeof ok === 'undefined' || tpEnabled || cbExtEnabled || adware.detected) { | |
if (typeof console !== "undefined") { | |
console.log("adblock.detected: " + (typeof ok === 'undefined') + ", " + tpEnabled + ", " + cbExtEnabled + ", " + adware.detected + ";"); | |
} | |
if (cbExtEnabled) { | |
document.getElementById('cbext').style.display = 'block'; | |
} else if (adware.detected) { | |
document.getElementById('ssext').style.display = 'block'; | |
document.getElementById('ssext-title').innerHTML = adware.nfo.title; | |
document.getElementById('ssext-info').innerHTML = adware.nfo.info; | |
} else { | |
if (tpEnabled) { | |
document.getElementById('fftp').style.display = 'block'; | |
} else { | |
document.getElementById('adb').style.display = 'block'; | |
} | |
} | |
document.getElementById('redirect').style.display = 'none'; | |
} else { | |
top.setTimeout(function () { | |
if (isAuth && isAuth.toLowerCase() !== "false") { | |
top.location.href = tracking_url; | |
} else { | |
top.location.href = "/ExternalLogin?ReturnUrl=" + tracking_url; | |
} | |
}, | |
5000); | |
} | |
}, | |
800); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment