Ciao, non so se esista un metodo inverso di preventDefault()
ad ogni modo ti basta usare una funzione nominata, così che puoi applicarla come listener con addEventListener() (come hai fatto per "controlla") e quindi rimuoverla con removeEventListener()
Esempio:
codice:
<script>
var casella = document.getElementById("privacy");
casella.addEventListener("click", controlla);
function controlla() {
if (casella.checked)
document.getElementById("myLink").removeEventListener("click", disabilitaClick);
else
document.getElementById("myLink").addEventListener("click", disabilitaClick);
}
function disabilitaClick (event){
event.preventDefault();
}
</script>
.
Esempio più stringato:
codice:
<script>
var casella = document.getElementById("privacy");
casella.addEventListener("click", controlla);
function controlla() {
document.getElementById("myLink")[(casella.checked ? 'remove' : 'add')+'EventListener']("click", disabilitaClick);
}
function disabilitaClick (event){
event.preventDefault();
}
</script>
.
Vedi se può andare.
Buon proseguimento