Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583

    si può passare un dato tra due pagine aperte?

    Ciao
    Ho una pagina che ho chiamato “Ingrandisci” che mi serve per lanciarne altre 8 in Fullscreen lasciando solo la menubar (quella con la X per chiudere)
    Queste pagine: grammaticaA – grammaticaB – grammaticaC – ecc. sono dei giochi che servono per dare nozioni di grammatica a bambini con difficoltà di apprendimento.
    I giochi, simili tra loro, hanno in comune il protagonista: un gatto. Attualmente all’apertura di ogni pagina il gatto ha 7 vite e ne perde una ad ogni errore e quando ha perso l’ultima se ne va nel paradiso dei gatti. Chiudendo la pagina prima che questo succeda, il numero delle vite rimanenti si perde, e aprendone un’altra si riparte da 7.
    Io vorrei, ad ogni vita persa, mandare il numero delle vite rimanenti alla pagina “Ingrandisci” che è rimasta aperta così che questa possa lanciare una nuova pagina passandole questo valore.
    E’ possibile ?
    rudyF

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Si devi usare i cookie, per maggiori ragguagli guarda nelle discussioni utili di questo forum (primo post in evidenza)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Grazie
    ho trovato "scrivere/leggere cookie"
    ora me lo studio
    rudyF

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Ciao
    Ho letto l'articolo e ho fatto qualche prova, ma non ho cavato un ragno dal buco.
    Poi mi è venuta un'idea. Non è necessario salvare il valore nella pagina "Ingrandisci" va bene anche salvarlo da qualche parte nel computer.
    Per esempio nel file usato dal Copia-Incolla (adesso mi sfugge il nome)
    oppure una cosa simile ad un contatore di visite che lavori in locale senza bisogno di scomodare il server perchè le mie pagine girano soltanto in locale e non sul Web.
    Scartabellando tra i manuali ho trovato questo:

    <Script Language=Vbscript>
    <!--
    Set Fso = CreateObject("Scripting.FileSystemObject")
    url = "C:\contatore.txt"

    ' le istruzioni seguenti possono essere eliminate perchè
    ' il file "contatore" lo creo manualmente, quindi c'è!
    If not Fso.FileExists(url) Then
    Fso.CreateTextFile(url)
    Set OggFile = Fso.GetFile(url)
    Set Scrittura = OggFile.OpenAsTextStream(2)
    Scrittura.WriteLine "7"
    Scrittura.Close
    End If
    ' fine delle istruzioni da eliminare

    Set OggFile = Fso.GetFile(url)

    'legge il valore
    Set Lettura = OggFile.OpenAsTextStream(1)
    valore = Lettura.ReadLine
    Lettura.Close

    'scrive il valore
    Set Scrittura = OggFile.OpenAsTextStream(2)
    Scrittura.WriteLine CStr(CInt(valore) - 1)
    Scrittura.Close
    -->
    </Script>

    Otto righe di codice e il problema è risolto.
    Sarebbe l'ideale!
    Solo che non va!

    Perché?
    rudyF

    P.S. Sarebbe meglio in Vbscript, ma va bene anche in JavaScript

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Mi correggo
    è l'editor (PSPad) che non accetta questa istruzione
    Set Fso = CreateObject("Scripting.FileSystemObject")

    lanciando la pagina da sola, questa funziona però esce un avviso:
    l'interazione di un controllo ActiveX ............ ecc.
    ciò rende la procedura inservibile

    Peccato!
    alla prossima
    rudyF

  6. #6
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    window.opener

    Originariamente inviato da rudyF
    Ciao
    Ho una pagina che ho chiamato “Ingrandisci” che mi serve per lanciarne altre 8 in Fullscreen lasciando solo la menubar (quella con la X per chiudere)
    Presumo che si tratti di nuove finestre aperte via JavaScript, pop-up windows con window.open() ; altrimenti, potrebbe trattarsi di DIV che passano da display='none' a 'block', sempre via JS, ma il tutto rimane su una stessa window.
    Nell' ottica del primo caso, ti posto questi come esempio (salvali in una stessa cartella):

    ingrandisci.html
    codice:
    <!DOCTYPE html PUBLIC>
    <html>
    <head><title>Ingrandisci</title>
    
    <script type="text/javascript">
    
    var lives = 7;
    
    function launch(which){
    
     window.open(which, '', 'fullscreen, scrollbars');
    
     }
    
    </script>
    
    </head><body>
    <div align="center">
    
    <input value="apri A" name="grA" onclick='launch("grammaticaA.html");' type="button">
    
    <input value="apri B" name="grB" onclick='launch("grammaticaB.html");' type="button">
    
    <input value="apri C" name="grC" onclick='launch("grammaticaC.html");' type="button">
    
    
    </div>
    
    </body>
    </html>
    grammaticaA.html (come per le altre due):
    codice:
    <!DOCTYPE html PUBLIC>
    <html>
    <head><title>grammatica C</title>
    
    </head><body onload='document.forms["myform"].elements["actual"].value=window.opener.lives;'>
    
    <div align="center">
    <form name="myform">
    
    <input value="" name="actual" type="text">
    
    
    <input name="choice" value="7" type="radio" onclick=window.opener.lives=this.value>7
    
    <input name="choice" value="6" type="radio" onclick=window.opener.lives=this.value>6
    
    <input name="choice" value="5" type="radio" onclick=window.opener.lives=this.value>5
    
    <input name="choice" value="4" type="radio" onclick=window.opener.lives=this.value>4
    
    <input name="choice" value="3" type="radio" onclick=window.opener.lives=this.value>3
    
    
    </form>
    </div>
    
    </body>
    </html>
    In questo case, il valore della variabile viene alterato in base a una scelta, nelle tue pagine avverrà in maniera sostanzialmente analoga, ma ciò che conta è che lo trasferiamo alla Finestra madre con
    window.opener
    che mette in comunicazione la finestra pop-up verso la finestra generatrice.
    Poi lo recuperiamo all' ONLOAD della pagina lanciata.

    Fammi sapere se ci stiamo avvicinando alla soluzione; sono stato molto semplice nell' esposizione.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    grazie
    appena posso, provo
    rudyF

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    OTTIMO !!!!!!!
    ho fatto così:

    nella pagina "Ingrandisci" ho aggiunto alla Function (in JavaScript)

    var lives = 7 ;

    mentre nelle 8 pagine denominate "grammaticaA" / B / C ecc. ho aggiunto nel VBScript:

    vite = 7 (nel caso che non venga usata la pagina "Ingrandisci")
    On Error Resume Next (che salta l'istruzione successiva in caso di errore)
    vite = window.opener.lives (che prende il valore dalla Finestra Madre)

    e poi, durante l'elaborazione

    vite = vite - 1
    On Error Resume Next
    window.opener.lives = vite (che modifica il valore nella finestra Madre)

    Funziona!
    Grazie ancora!
    rudyF

  9. #9
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    if-statement e variabile inesistente

    Mi fa piacere che il tuo lavoro progredisca !!!
    Originariamente inviato da rudyF
    ... senza bisogno di scomodare il server perchè le mie pagine girano soltanto in locale e non sul Web.
    .. / ..
    P.S. Sarebbe meglio in Vbscript, ma va bene anche in JavaScript
    Attenzione che in locale, Vbscript lo elabora solo IExplorer; JavaScript "coprirebbe" invece anche chi apre le tue applicazioni con un altro Browser.

    Originariamente inviato da rudyF
    lanciando la pagina da sola, ...
    Allora: se lo fai con una delle mie pagine grammatica A/B, le apri senza lanciarle da "Ingrandisci", vedrai che nel textbox non si stampa niente; vale a dire, window.opener.lives ha ritornato un valore vuoto "".

    Dichiariamo ancora la:
    var vite = 7 (per lo stesso tuo intento)
    ma poi sostituiamo On Error Resume Next di VSscript con un IF-Statement JS

    if(window.opener.lives!=""){vite = window.opener.lives};

    dove l' operatore di comparazione != sta per non-è-uguale
    e solo se l' ipotesi formulata tra le () risulta vera, l' if-statement da' esecuzione all' istruzione/i contenuta nelle {}

    Che poi, basterebbe fare:
    if(window.opener){vite = window.opener.lives};
    che semplicemente va a testare se esiste una Window generatrice; e mi pare anche sintatticamente più corretto.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    ciao
    io non conosco JavaScript, ma soltanto VBScript e tutte le mie pagine girano con tale linguaggio (solo per IE, ma non è un problema)
    Ho provato a controllare se il valore arrivato dall'opener fosse nullo oppure un valore reale:

    vite = window.opener.lives
    If vite = "" Then .......

    ma mi dava sempre errore, così ho usato "on error ..."

    ora ho provato il tuo suggerimento con

    If window.opener.lives <> "" Then vite = window.opener.lives (in VBScript)

    che dovrebbe controllare il valore passato dall'opener (non l'esistenza dello stesso)
    ma nel caso che si apra una pagina senza lanciarla con "Ingrandisci"
    il fatto stesso di interpellare qualcosa che non esiste genera errore.

    rudyF

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.