Snippet Javascript

Dato un intervallo di tempo, se un evento è compreso entro tale intervallo, fai cose. Questo snippet è disponibile anche in php

/* mi salvo la data odierna, di inizio, e di fine evento */
var adesso = new Date();
/* in questo caso l'inizio è 18 ottobre 2021 */
var inizio = new Date("2021-10-18T00:00:00.000Z");
/* in questo caso la fine è 30 giugno 2022 */
var fine = new Date("2022-06-30T00:00:00.000Z");
/* trasformo tutto in secondi */
var secondsInizioAdesso = adesso.getTime() / 1000; 
var secondsInizio = inizio.getTime() / 1000;
var secondsFine = fine.getTime() / 1000; 
/* se la data è compresa nell'intervallo */
if ( (secondsInizioAdesso >= secondsInizio) && ( secondsInizioAdesso < secondsFine)){
    /* fai cose */

} else {
    /* fai altre cose */
}

Apre il link inserito

window.location.href = '...link...';

var myModal = new bootstrap.Modal(document.getElementById("exampleModal"), {});
document.onreadystatechange = function () {
  myModal.show();
};

addEventListener('resize', (event) => {
/* evento che accade al resize */
});

Inserendo questo codice nel javasctipt possiamo fare un'azione DOPO l'invio della mail da parte del form di Contact Form 7, questa azione verrà compiuta solo se l'invio è avvenuto con successo

document.addEventListener( 'wpcf7mailsent', function( event ) {
    if(event.detail.contactFormId == 'ID NUMERICO DEL FORM, SI LEGGE DA WORDPRESS') {
       /* azione personalizzata */
    }
}, false );

Inserendo questo codice nel javasctipt possiamo fare un'azione DOPO l'invio della mail da parte del form di Contact Form 7, questa azione verrà compiuta solo se l'invio è avvenuto con successo

/* gestione click duplicati all'invio del form */
$('.wpcf7-form').on('submit', function() {
  $(this).find('.wpcf7-submit').attr('disabled', true);
});

$('.wpcf7').on('wpcf7submit', function (e) {
  $(this).find('.wpcf7-submit').removeAttr('disabled');
});
/* fine gestione click duplicati all'invio del form */

la precedente soluzione: if (screen.width < 1025) { } non copre correttamente safari perché restituisce la dimensione dello schermo e non della finestra del browser

if (window.innerWidth < 1025) {
}

Collegare questa funzione a un evento

function copyElementText(tag) {
    var text = $(tag).text();
    var elem = document.createElement("textarea");
    document.body.appendChild(elem);
    elem.value = text;
    elem.select();
    document.execCommand("copy");
    document.body.removeChild(elem);
}');

// DOCUMENT READY Without jQuery
// Define a convenience method and use it
var ready = (callback) => {
  if (document.readyState != "loading") callback();
  else document.addEventListener("DOMContentLoaded", callback);
}

ready(() => { 
  /* Do things after DOM has fully loaded */ 
});

link utile qui.
Chiamare la funzione così: download_file(fileURL, fileName);

function download_file(fileURL, fileName) {
// for non-IE
if (!window.ActiveXObject) {
    var save = document.createElement('a');
    save.href = fileURL;
    save.target = '_blank';
    var filename = fileURL.substring(fileURL.lastIndexOf('/')+1);
    save.download = fileName || filename;
      if ( navigator.userAgent.toLowerCase().match(/(ipad|iphone|safari)/) && navigator.userAgent.search("Chrome") < 0) {
            document.location = save.href; 
// window event not working here
        }else{
            var evt = new MouseEvent('click', {
                'view': window,
                'bubbles': true,
                'cancelable': false
            });
            save.dispatchEvent(evt);
            (window.URL || window.webkitURL).revokeObjectURL(save.href);
        }   
}
download_file(fileURL, fileName); //call function

link utile qui.

let a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = "link file";
a.download = "nome file";
a.click();
document.body.removeChild(a);

function restartGif(imgElement){
    let element = document.getElementById(imgElement);
    if (element) {
    var imgSrc = element.src;
    console.log(imgSrc);
    element.src = imgSrc; 
    }
}

Se 'text' è html, gli / devono essere escaped \/ altrimenti non funziona

function download(filename, text) {
  var element = document.createElement('a');
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  element.setAttribute('download', filename);

  element.style.display = 'none';
  document.body.appendChild(element);

  element.click();

  document.body.removeChild(element);
}

link utili qui e qui

Come leggere la variabile in CSS

height: calc(var(--vh, 1vh) * 100);

codice js

let vh = window.innerHeight * 0.01;
document.documentElement.style.setProperty('--vh', `${vh}px`);

link utile qui

document.documentElement.style.setProperty('--nome-variabile', 'caratteristica, tipo white');

Collegare questa funzione a un evento

window.addEventListener( "pageshow", function ( event ) {
    var historyTraversal = event.persisted || ( typeof window.performance != "undefined" && window.performance.navigation.type === 2 );
    if ( historyTraversal ) {
    // Handle page restore.
    /* window.location.reload(); */
    /* console.log('navigazione con le freccie') */
    } else {
    /* console.log('navigazione normal'); */
    }
});

location.hash

Funzioni per leggere un cookie e condizione

function getCookie(cname) {
    var name = cname + "=";
    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);
        if(c.indexOf(name) == 0)
            return c.substring(name.length,c.length);
    }
    return "";
}
//se il cookie non esiste
if (!(getCookie('valoreCookie'))) {
//fai cose
}

link utili qui e qui.
Se la selezione viene fatta con jquery, l\'argomento della funzine deve essere passato così: $(".elemento")[0];

function getOffset(el) {
    const rect = el.getBoundingClientRect();
    /* sono disponibili altri parametri */
    return {
        left: rect.left + window.scrollX,
        height: rect.height
    };
}

phone: value => value.match(/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im),
email: value => value.match(/^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)

Adattato da qui

/* rendere scrollable la sezione con la timeline */
const elemento_scrollabileX = document.querySelector('.timeline');
let isDown = false;
let startX;
let scrollLeft;

elemento_scrollabileX.addEventListener('mousedown', (e) => {
    isDown = true;
    elemento_scrollabileX.classList.add('active');
    startX = e.pageX - elemento_scrollabileX.offsetLeft;
    scrollLeft = elemento_scrollabileX.scrollLeft;
});
elemento_scrollabileX.addEventListener('mouseleave', () => {
    isDown = false;
    elemento_scrollabileX.classList.remove('active');
});
elemento_scrollabileX.addEventListener('mouseup', () => {
    isDown = false;
    elemento_scrollabileX.classList.remove('active');
});
elemento_scrollabileX.addEventListener('mousemove', (e) => {
    if(!isDown) return;
    e.preventDefault();
    const x = e.pageX - elemento_scrollabileX.offsetLeft;
    const walk = (x - startX) * 1.5; //scroll speed
    elemento_scrollabileX.scrollLeft = scrollLeft - walk;
    /* console.log(walk); */
});

nell'esempio, il cookie scadrà dopo 15 secondi riga con -> (15*1000)

var date = new Date();
date.setTime(date.getTime()+(15*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = "df="+expires+"; path=/";