Skip to content

Instantly share code, notes, and snippets.

@golubev-alex
Last active April 16, 2024 12:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save golubev-alex/a59452f9b630737b870d23bc70e5e653 to your computer and use it in GitHub Desktop.
Save golubev-alex/a59452f9b630737b870d23bc70e5e653 to your computer and use it in GitHub Desktop.
function scrollTo(element) {
window.scroll({
behavior: 'smooth',
left: 0,
top: element.getBoundingClientRect().top + document.documentElement.scrollTop - document.querySelector('header').offsetHeight + 20
})
}
https://github.com/RobinHerbots/Inputmask
$().inputmask('+7 (999) 999-99-99', {'clearIncomplete': true});
window.addEventListener('load', ()=>{
let phoneInputs = document.querySelectorAll("input.phone-mask");
if (phoneInputs) {
for (let phoneInput of phoneInputs) {
Inputmask('+7 (999) 999-99-99', {
clearIncomplete: true,
greedy: false
}).mask(phoneInput)
}
}
let emailInputs = document.querySelectorAll("input.email-mask");
if (emailInputs) {
for (let emailInput of emailInputs) {
Inputmask({
alias: 'email',
clearIncomplete: true,
greedy: false
}).mask(emailInput);
}
}
})
//vanillajs coockie (in seconds)
document.cookie = `popupWheelShowned=true; max-age=${24 * 60 * 60}; path=/`
function getCookie (name) {
let value = `; ${document.cookie}`;
let parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
// check element in viewport
var isInViewport = function (elem) {
var bounding = elem.getBoundingClientRect()
return (
bounding.top >= 0 &&
bounding.left >= 0 &&
bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
bounding.right <= (window.innerWidth || document.documentElement.clientWidth)
)
}
// вставка яндекс-метрики, которая не портит показатели
( function () {
var loadedTLAnalytics = false,
timerId;
if ( navigator.userAgent.indexOf( 'YandexMetrika' ) > -1 ) {
loadTLAnalytics();
} else {
window.addEventListener( 'scroll', loadTLAnalytics, {passive: true} );
window.addEventListener( 'touchstart', loadTLAnalytics, {passive: true} );
document.addEventListener( 'mouseenter', loadTLAnalytics, {passive: true} );
document.addEventListener( 'click', loadTLAnalytics, {passive: true} );
document.addEventListener( 'DOMContentLoaded', loadFallback, {passive: true} );
}
function loadFallback() {
timerId = setTimeout( loadTLAnalytics, 5000 );
}
function loadTLAnalytics( e ) {
if ( e && e.type ) {
console.log( e.type );
} else {
console.log( 'DOMContentLoaded' );
}
if ( loadedTLAnalytics ) {
return;
}
setTimeout(
function () {
var metricaId = 79578238;(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym");
ym( metricaId, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true,triggerEvent:true });
console.log("ym start");
}, 100);
loadedTLAnalytics = true;
clearTimeout( timerId );
window.removeEventListener( 'scroll', loadTLAnalytics, {passive: true} );
window.removeEventListener( 'touchstart', loadTLAnalytics, {passive: true} );
document.removeEventListener( 'mouseenter', loadTLAnalytics );
document.removeEventListener( 'click', loadTLAnalytics );
document.removeEventListener( 'DOMContentLoaded', loadFallback );
}
}
)()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment