Originariamente inviata da
U235
Max, scusami. Quando ho fatto un test non ho badato al fatto che avevo il Debugger aperto, per cui funzionava, ma non funziona senza... credo sia un problema di thread.
Inoltre non saprei perché ti da errore di sintassi li, ma non approfondisco nemmeno perché tanto non va senza il Debugger collegato.
Dal momento che ti ho fatto perdere tempo ho deciso di fornirti una qualche soluzione alternativa:
codice:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
#box {
display: none;
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0px;
border: none;
z-index: 9;
}
#iFrame {
width:99%;
height:98%;
}
#chiudi {
position: absolute;
right: 0;
top: 0;
display: inline-block;
width: 20px;
height: 20px;
border: 7px solid #f56b00;
background: linear-gradient(45deg, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 43%,#fff 45%,#fff 55%,rgba(0,0,0,0) 57%,rgba(0,0,0,0) 100%), linear-gradient(135deg, #f56b00 0%,#f56b00 43%,#fff 45%,#fff 55%,#f56b00 57%,#f56b00 100%);
}
</style>
</head>
<body>
<div>
<a href="#" onclick=conferma1('www.miosito.it/viewurl.php?id=<? echo "$row[id]";?>','www.miosito.it./cancellaclienti.php?id=<? echo "$row[id]";?>')>web</a><br />
</div>
<div id="box">
<div>
<a href="#" id="chiudi"></a>
</div>
<iframe id="iFrame"></iframe>
</div>
<script>
function conferma1(url, cPage) {
var iframe = document.getElementById("iFrame");
var box = document.getElementById("box");
var chiudi = document.getElementById("chiudi");
iframe.setAttribute("src", url);
box.style.display = "block";
chiudi.addEventListener("click", () => {
box.style.display = "none";
var new_element = chiudi.cloneNode(true);
chiudi.parentNode.replaceChild(new_element, chiudi);
setTimeout(() => {
if (confirm("vuoi cancellare il dato " + url + "?"))
if (confirm("Vuoi cambiare pagina?"))
window.location = cPage;
else
fetch(cPage)
.then(data => {
alert(data.ok ? "dati cancellati" : "errore");
})
.catch(e => {
alert(e);
});
});
});
}
</script>
</body>
</html>
In questo caso non si apre una finestra, ma un iframe che puoi chiudere cliccando sulla x in alto a destra, una volta chiusa comparir� il confirm per chiederti se cancellare o meno, cliccando su si mi sono permesso di mettere la scelta (si apre un altro confirm, ma poi puoi scegliere direttamente una soluzione tra le due senza mettere il confirm) tra rimanere nella stessa pagina chiamando la pagina di cancellazione in background, oppure cambiare direttamente pagina andando alla pagina di cancellazione.
Qui puoi vedere come funziona. Tieni presente che molti siti (come nel caso dei link in questa pagina di esempio) non permettono di visualizzare la pagina in un iframe, ma nel tuo caso mi pare di capire che usi il tuo dominio stesso (non fai chiamate a domini esterni), per cui non dovresti avere problemi.
In ogni caso puoi vedere il suo funzionamento. Una volta chiuso se scegli di cancellare i dati e di non cambiare pagina, un alert ti avviserà quando il caricamento della pagina di cancellazione è stata caricata (si presume che essa abbia cancellato) oppure di avviserà che c'è stato un errore (nel primo link da messaggio di errore, mentre nel secondo simula l'andata a buon fine).