C’è un sito che frequento spesso per iscrivermi alle escursioni.
Il form di iscrizione è sempre lo stesso: nome, cognome, codice fiscale, email, indirizzo, telefono. Ogni volta. Per ogni evento.
Non c’è un sistema di login. Compili, invii, e la volta successiva riparti da zero.
A un certo punto mi sono stancato e ho cercato una soluzione che non richiedesse di installare niente.
Il bookmarklet
Un bookmarklet è un segnalibro nel browser che invece di aprire una pagina esegue del codice JavaScript sulla pagina che stai guardando. Esiste da vent’anni, funziona su qualsiasi browser, non richiede estensioni.
Lo crei una volta, lo metti nella barra dei preferiti, e quando ti serve clicchi e il codice gira.
Lo script
Il problema dei form su WordPress (in particolare quelli fatti con Elementor) è che i campi hanno ID generati automaticamente, tipo field_3a2bc9f. Questi ID cambiano da form a form, quindi non puoi usarli come riferimento stabile.
La soluzione che ho adottato è usare il placeholder, quel testo grigio che appare nel campo vuoto e che dice “Nome e Cognome” o “Telefono”. Quello è scritto dall’amministratore del sito e di solito rimane coerente.
Lo script cerca ogni campo del form guardando il testo del placeholder e ci inserisce il valore corrispondente:
javascript:(function(){
var f=document.querySelector('.elementor-form');
if(!f){alert('Form non trovato!');return;}
function set(kw,v){
var els=f.querySelectorAll('[placeholder]');
for(var i=0;i<els.length;i++){
if(els[i].placeholder.toLowerCase().indexOf(kw.toLowerCase())!==-1&&!els[i]._filled){
els[i].value=v;
els[i]._filled=true;
return;
}
}
}
// Prima le keyword specifiche, poi quelle generiche
// (per evitare che "nome" finisca nel campo "nome di tutti i partecipanti")
set('nome e cognome di tutti','Mario Rossi');
set('codice fiscale di tutti','RSSMRA...');
set('nome','Mario Rossi');
set('codice fiscale','RSSMRA...');
set('email','mario@esempio.it');
set('indirizzo','Via Esempio 1');
set('citt','00100 Roma');
set('telefono','3331234567');
set('adulti','1');
// Select: legge il testo della label per capire a cosa si riferisce
f.querySelectorAll('select').forEach(function(s){
var l=f.querySelector('label[for="'+s.id+'"]');
if(!l)return;
var t=l.textContent.toLowerCase();
if(t.indexOf('assicurativ')!==-1)s.value='Sì';
if(t.indexOf('condivisione')!==-1)s.value='No';
});
// Spunta il checkbox privacy
var c=f.querySelector('input[value="Presa visione e accettazione"]');
if(c)c.checked=true;
alert('OK');
})();
Un dettaglio importante: le keyword più specifiche vanno cercate per prime. Se cercassi prima nome intercetterei il campo “Nome e cognome di tutti i partecipanti” invece di “Nome e Cognome”. Il flag _filled evita che lo stesso campo venga compilato due volte.
Come installarlo
- Copia tutto il codice (deve essere su una riga sola, senza interruzioni)
- Nel browser crea un nuovo segnalibro – su Firefox: tasto destro sulla barra dei preferiti → “Aggiungi segnalibro”
- Come nome metti quello che vuoi, tipo
Autofill iscrizioni - Come URL incolla il codice
- Salva
Su Firefox a volte il campo URL tronca il testo se è troppo lungo. Se succede, apri il gestore segnalibri (Ctrl+Shift+B), trova il segnalibro, clicca su di esso e modifica il campo URL direttamente da lì.
Come usarlo
Vai sulla pagina del form, clicca il segnalibro dalla barra dei preferiti. I campi anagrafici si compilano. Quelli che cambiano ogni volta – numero di partecipanti aggiuntivi, data, note – li lasci vuoti e li compili a mano.
Limiti
Funziona finché il sito usa gli stessi placeholder. Se l’amministratore cambia il testo dei campi (es. da “Città e cap” a “Città e CAP”) quel campo smette di compilarsi. Non è un problema frequente, ma va tenuto presente.
Funziona solo su siti che non bloccano l’esecuzione di JavaScript esterno tramite Content Security Policy. La maggior parte dei siti WordPress non lo fa.
Non è adatto per dati sensibili che non vuoi conservare nel browser – il codice del segnalibro è visibile a chiunque abbia accesso al tuo browser.
