Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Link con confirm, apertura nuova finestra e aggiornamento finestra corrente

    Salve,
    ho una pagina con un link che all'evento onclick mi apre un confirm con un link in una nuova finestra.

    onclick="return confirm('Confermi?'); return false;"

    io vorrei aggiungere un timer che dopo un secondo dalla conferma, non da rifiuto ovviamente, aggiorni la pagina genitore con un window.reload(); per esempio.

    È fattibile con una riga o devo creare una funzione?

    Grazie!
    Ciao!

  2. #2
    Ho risolto... posto se può servire.

    codice:
    onclick="conferma(this.href); return false;"
    
    function conferma(link)
    {
    	if(confirm('Confermi?')==true)
    	{
    		window.open(link);
    		setTimeout(function() {
    			window.location.reload();
    		},1000);
    	}
    }
    </script>
    Ciao!

  3. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Sintetizzo:

    codice:
    function conferma (link) {
    	if (!confirm("Confermi?")) { return; }
    	window.open(link);
    	setTimeout(location.reload, 1000);
    }
    Oppure, se vuoi essere proprio laconico…:

    codice:
    function conferma (link) {
    	confirm("Confermi?") && setTimeout((open(link), location.reload), 1000);
    }
    P.S. A dispetto delle apparenze, anche nel secondo esempio la funzione window.open() verrà lanciata immediatamente e non dopo un secondo come avviene invece per location.reload()…

  4. #4
    Grazie Carlo...

    credo che userò la tua prima versione, che mi pare più diretta...
    la seconda non la capisco, nel senso... c'è un motivo per cui la funzione window.open verrà chiamata subito e location.reload no?

    PS: hai scritto open e non window.open, è un errore?
    Ciao!

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da fmortara
    credo che userò la tua prima versione, che mi pare più diretta...
    Sono identiche, l'unica differenza è che una è più lunga, l'altra è più breve…


    Originariamente inviato da fmortara
    la seconda non la capisco, nel senso... c'è un motivo per cui la funzione window.open verrà chiamata subito e location.reload no?
    Sì, il motivo è nella sintassi polinomiale dell'assegnazione di un valore. Se scrivi:

    codice:
    var tuaVariabile = (faiQualcosa(), a = b, faiQualcosaltro(), ["uno", "due", "tre"]);
    come vedi hai diverse operazioni separate da una virgola. L'unico valore che verrà "ricordato" sarà l'ultimo, e in questo caso alla variabile tuaVariabile sarà assegnato l'array ["uno", "due", "tre"], mentre tutto quello che è venuto prima sarà "dimenticato". Nel nostro esempio l'ultimo valore (di due valori separati da virgola) è la funzione location.reload, che sarà assegnata a setTimeout, mentre la funzione open() verrà eseguita, ma non assegnata. Come ti dicevo è solo un modo sintetico di scrivere, il risultato è lo stesso…


    Originariamente inviato da fmortara
    PS: hai scritto open e non window.open, è un errore?
    Regola generale: tutte le volte che hai window.qualcosa puoi tranquillamente eliminare window e lasciare solo qualcosa. Ci sono alcune cose, come window.location, window.open, etc. che si sono cristallizate così solo ed esclusivamente per abitudine dei programmatori.

  6. #6
    Originariamente inviato da carlomarx
    Grazie Mille!
    Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.