Visualizzazione dei risultati da 1 a 7 su 7

Discussione: problema con onUnload

  1. #1

    problema con onUnload

    salve a tutti,
    un neofita ha bisogno del vostroi aiuto.
    Il problema è questo. Nel mio sito, gli utenti che effettuano il primo login vengono rimandati ad una pagina dove devono accetare il regolamento ed esprimere il consenso sul trattamento dei dati personali.
    Dopo tutto il testo ci sono due radio button. Appena gli utenti cliccano accetto oppure non accetto, parte il submit che è sulla stessa pagina e che manda anche l'action. in pratica la pagina si ricarica e action è accetto, succede una cosa. Se è non accetto ne succede un altra. Dopo questa elaborazione la popup si chiude e la parent si ricarica.

    Ora ho il problema che se l'utente chiude la finestra di popup senza esprimere il suo consenso, nè in un modo, nè in altro, vorrei che al reload della pagina padre comparisse un alert con il messaggio che non possono proseguire se non hanno espletato la funzione di accettare o meno il regolamento e la legge sulla privacy.

    Nella pagina padre ho inserito il seguente codice:

    <%
    ErrorMessage = Request("ErrorMessage")
    If ErrorMessage <> "" Then
    %>
    <script LANGUAGE="JavaScript" FOR="window"
    EVENT="onLoad()">
    <!--
    window.alert("ERRORE...!.\n\n<% =ErrorMessage %>")
    //-->
    </script>
    <% End If %>

    Nella popup il seguente:

    <BODY onUnload="self.opener.location.reload(); window.close()">

    Ora devo inseire su questa stessa pagina che se viene chiusa, onUnload, senza che sia stato espresso nessun consenso, deve rimandare un messaggio di errore alla pagina padre.
    Certamente voi saprete darmi delle indicazioni. Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    il comando e onbeforeunload (es: <body onbeforeunload="alert('ciao')">) ma alcuni browser non lo supportano (espera) ed è comunque poco affidabile, meglio se metti un div che mostri/nascondi col display none/block e al suo interno metti un iframe per caricare la pagina (soluzione + rapida e semplice) oppure usi ajax.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ti conviene ragionare e gestirlo all'incontrario.... se il server non riceve nessuna opzione (conferma o diniego) nella pagina "padre" apparira' il messaggio... ma il tutto e' da trattare esclusivamente lato server

    ciao

    ps: benvenuto sul forum
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    grazie ad entrambi. mi sa che è meglio gestirlo lato server così sono certo che l'evento viene interpretato correttamente.

  5. #5
    scusate se riposto. cosa c'è di errato nella seguente riga di codice:

    <BODY onUnload="self.opener.location.reload(); window.close('Action= "<%=Action%>"')">

    Sto solo cercando di postare una variabile che poi viene intercettata dalla pagina padre ma non mi funziona.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da override64
    scusate se riposto. cosa c'è di errato nella seguente riga di codice:

    <BODY onUnload="self.opener.location.reload(); window.close('Action= "<%=Action%>"')">

    Sto solo cercando di postare una variabile che poi viene intercettata dalla pagina padre ma non mi funziona.
    Il window.close() non puoi passagli dei parametri.
    Se devi passare una variabile alla pagina padre, o usi una session <%Session("action") = "tuovalore"%> e quando ricarichi la pagina padre la verifichi oppure l'invi in querystring onUnload="self.opener.location.href='tuapagina.asp ?action=<%=action%>'";

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Se a qualcuno dovesse serire posto la soluzione che ho adottato.

    1. Nella pagina padre ho modificato il codice postato sopra con il seguente:

    <%
    Action = Request("Action")
    If Action = "popupclosed" Then
    ErrorMessage = "Non puoi continuare se non esprimi il tuo consenso."
    If ErrorMessage <> "" Then %>
    <script LANGUAGE="JavaScript" FOR="window"
    EVENT="onLoad()">
    <!--
    window.alert("ERRORE...!.\n\n<% =ErrorMessage %>")
    //-->
    </script>
    <% End If
    End If %>

    2. Nella pagina popup ho modificato il codice così:
    All'inizio c'è la <%Action = Request("Action")%>
    '
    '
    codice asp poi la funzione per il form che sta sotto

    <SCRIPT LANGUAGE="JavaScript">
    function go(loc) {
    window.location.href = loc;
    }
    </script>
    '
    '
    <HEAD>
    '
    altro codice
    '
    </HEAD>

    <BODY onUnload="self.opener.location.reload('http://miosito/reg/first_login.asp?Action=popupclosed'); window.close()">
    '
    altro codice
    '
    poi il form
    '
    e poi i pulsanti radio del submit

    <input type="radio" name="loc" onClick="go('privacy.asp?Action=OK');"><font ecc. ecc.>
    '
    poi il codice che elabora la risposta e infine

    <script language="javascript1.2">self.opener.location.relo ad('Action= "<%=Action%>"');
    window.close()
    </script>

    In questo modo sono riuscito a gestire l'evento lato server senza eliminare la popup.
    So che c'è di meglio ma con JavaScript ho meno confidenza che con ASP.
    Ovviamente suggerimenti e miglioramenti sono ben accetti.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.