All' avvio della funzione/i, che raccoglierà le istruzioni JS che vuoi siano eseguite, per prima cosa fai stendere un DIV position: absolute; che copre tutta la pagina.
Questo DIV esiste già nell' HTML, JS lo fa passare da display: none a block e viceversa.
Nell' esempio ho messo un timer, facciamo conto che l' esecuzione del programmino richieda 3 secondi (3000 milli-sec).
Nota che il link non sarà più cliccabile nel frattempo, come pure il pulsante.
Il DIV lo possiamo avere anche semi-trasparente; entriamo così nel CSS3, e c'è un po' di casistica dei browser da osservare per garantire l' opacity.
codice:
<script>
function execute(){
var overlayer = document.getElementById("overdiv");
overlayer.style.display = "block";
setTimeout('document.getElementById("overdiv").style.display = "none";', 3000);
}
</script>
<input value="esegui" type="button" onclick="execute();">
Link a Google
<div id="overdiv"
style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;
display: none; background-color: black; opacity: 0.4; filter: alpha(opacity=40);">
</div>