Qui lo snippet ("micro libreria") che puoi inserire come regola prima di tutte le altre:
codice:
/* -------------------------------------------------------------- */
/* GESTIONE FLAG PER "TORNA INDIETRO" */
/* */
/* Questo blocco deve essere definito una sola volta inizialmente */
/* e vale per tutte le pagine */
/* -------------------------------------------------------------- */
var _azioneConsentita;
(()=>{
function rimuoviFlag(){
sessionStorage.removeItem('azioneNegata');
}
const flag = sessionStorage.getItem('azioneNegata');
if (flag) window.addEventListener('beforeunload', rimuoviFlag);
_azioneConsentita = !flag;
const btnIndietro = document.querySelector('.navbithome > a');
//const btnIndietro = document.querySelector('a.back[title="Indietro"]');
if (btnIndietro){
btnIndietro.addEventListener('click', e=>{
window.removeEventListener('beforeunload', rimuoviFlag);
sessionStorage.setItem('azioneNegata', true);
});
}
})();
Questo script si occupa appunto di gestire la creazione/rimozione del flag, in base al fatto che si prema il pulsante "Indietro" o si esca dalla pagina per altri motivi.
Negli altri script puoi quindi usare la variabile _azioneConsentita, inserendola in una condizione, per stabilire quando l'autoclick (o quel che è) deve, o no, essere eseguito. Questa variabile avrà infatti valore false se si è usato il pulsante "Indietro" per cui l'azione automatica non va eseguita, altrimenti avrà valore true.
Il primo script in questione può essere impostato quindi in questo modo:
codice:
const btnStampa = document.querySelector('[title="Stampa etichette"]');
if (_azioneConsentita && btnStampa) btnStampa.click();
Il secondo script, in questo modo:
codice:
const labels = document.querySelectorAll('label');
const elMessage = document.querySelector('.messages.confirms');
if (_azioneConsentita && labels[1].innerText == 'Modello di stampa' && !(elMessage && elMessage.textContent.trim() === 'La stampa è stata inoltrata')){
document.getElementsByClassName("button confirm")[0].click();
setTimeout(()=>{
const labels = document.querySelectorAll('label');
if (labels[1].innerText == 'Modello di stampa'){
document.getElementsByClassName("reports")[0].click();
}
},200);
}
Quest'ultimo non ho avuto modo di testarlo per via delle due condizioni particolari. Vedi intanto se funziona, altrimenti cerchiamo di capire come meglio impostarlo.
Ad ogni modo ti invito a cercare di comprendere la logica usata. Ho usato nomi e valori abbastanza autodescrittivi e lo script è tutto sommato semplice; non sono solito dare sempre la minestra pronta ma è piuttosto mio interesse cercare di far comprendere un metodo di applicazione così che si riesca a destreggiarsi per risolvere da se stessi eventuali future problematiche a riguardo.
Se ti servono chiarimenti chiedi pure.