Visualizzazione risultati 1 fino 13 di 13

Discussione: Popup in js che interagisce con la normale finestra

  1. #1
    Guest

    Question Popup in js che interagisce con la normale finestra

    ciao a tutti, ho un problema col js. Stavo migliorando un pò il sito quando ho deciso di inserire al volo una tagboard, ho realizzato la pagina dove l'utente invia il su messaggio, smyle e tutto, però avrei appunto un problema con le smyle. Tempo fa funcool mi diede un piccolo script per aggiungere un valore ad una textarea, della serie:
    Codice HTML:
    <a href="#" onclick="document.getElementById('textarea').value=document.getElementById('textarea').value+'CIAO'; return false;" style="width:auto;background:none;display:inline;">CIAO</a>
    Dunque la textarea si chiama textarea, e dovrebbe inserire il testo: CIAO. Ma io ho fatto che per inserire le smyle si deve aprire una popup con il codice di sopra. Il fatto è che nella pagina di smyle.php non c'è il textarea, ma c'è nell'altra pagina. E' possibile far interaggire le due pagine tra di loro? Magari con un target? Grazie per gli aiuti..ciao

  2. #2
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    La finestra popup è stata sicuramente "originata" (cioè aperta) da una finestra "madre", colei che l'ha aperta ovvero la finestra "opener".
    "window.opener" è appunto il riferimento diretto all' oggetto Window che ha aperto il popup dove gira il javascript corrente.
    Quindi se la textarea sta nella finestra madre puoi fare robe tipo:

    invece di:
    document.getElementById('textarea')
    fai:
    window.opener.document.getElementById('textarea')

    per una pulizia maggiore del codice consiglio di non scrivere tutto il codice accanto all'"onclick" ma magari scrivere tipo: onclick="aggiungi('CIAO'); return false;" e il grosso del codice lo sposti nella definizione della function aggiungi()... come vuoi.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  3. #3
    Guest

    Predefinito

    non và...come posso fare? Magari cambiando il codice è possibile? grazie x l'aiuto..ciao

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ti esce qualche errore di JavaScript?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    no, nessuno, non esegue nessuna funzione..ciao

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a modificare:
    Codice:
    window.opener.document.getElementById('textarea')
    In:
    Codice:
    window.opener.getElementById('textarea')
    Se continua a non funzionare lo script, scrivi tutto il codice che utilizzi e il link alla pagina dove è presente lo script, se è online.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    ma sia al primo che al secondo devo mettere window.opener? cioè, mi puoi fare un secondo un esempio col codice...grazie mille e ciao

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Potresti mostrarci i codici delle DUE pagine?
    Dunque
    1) il codice della finestra madre, con la textarea, e soprattutto con il window.open che fa aprire inizialmente il popup
    2) e il codice del popup con un suo link (di test per ora, immagino) simile a quello indicato nel primo post, con l'onclick per capirci.
    Se ti sei perso uno di questi passaggi (id textarea, window.open, window.opener...) non punzionerà, e visto che non funziona è meglio dare un'occhiata al codice che è stato buttato giù.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Sì, nella pop-up devi aggiungere a tutti "window.opener".
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  10. #10
    Guest

    Predefinito

    ok, posto i codici:
    smyle_c.php:
    Codice HTML:
    <html>
    <head>
    <title>Smyle</title>
    <link href="/blog/style_01.css" type="text/css" rel="stylesheet" />
    </head>
    <body>
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':polizia:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/admin.gif"></a>
    
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':angel:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/angel.gif"></a>
    
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':arg:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/arg.gif"></a>
    
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':love:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/love.gif"></a>
    
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':love:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/XD.gif"></a>
    
    <a href="#" onclick="getElementById('textarea').value=window.opener.document.getElementById('textarea').value+':up:'; return false;" style="width:auto;background:none;display:inline;"><img src="/blog/img/up.gif"></a>
    </body>
    </html>
    E la pagina della chat:
    Codice PHP:
    <script type="text/Javascript" language="Javascript">
    function smyle() {
    window.open('/blog/struttura/smyle_c.php','smyle','scrollbars=no,status=no,resizable=no,top=200,left=200,width=350,height=300');
    }
    </script>
    <table width="176" border="0" cellspacing="0" cellpadding="0" class="ublocco">
    <tr>
    <td width="0" class="lept"></td>
    <td width="176" class="menu"><a href="javascript:no_click();" class="bloccomenu" style="display:inline;width:auto;background:none; border:0px;margin:0px;padding:0px;">CHAT:</a></td>
    <td width="0" class="right"></td>
    </tr>
    <tr>
    <td colspan="3" class="left">

    <table width="176" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td colspan="2"><iframe src="/blog/struttura/chat.php" width="147" height="133" frameborder="0">Impossibile visualizzare la chat...</iframe></td>
    </tr>
    <tr>
    <td>nick: <?php echo $nick; ?></td>
    <td><a href="javascript:smyle();" style="background:none;display:inline;with:auto;color:#000000;">Smyle</td>
    </tr>
    <tr>
    <td colspan="2">Contenuto:
    <textarea name="textarea" id="textarea" cols="26" rows="2"></textarea></td>
    </tr>
    </table>

    </td>
    </tr>
    </table>
    poi c'è chat dove è presente la pagina con i messaggi...
    ..grazie ancora e ciao

  11. #11
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Devi aggiungere "window.opener.document." prima di "getElementById('textarea')" dove non lo hai messo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  12. #12
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Eh sì,
    per quello ti consigliavo anche di chiamare una semplice function (che esegua lo stesso codice UNA volta per tutti) nei vari onclick, così eviti di ripetere codice ovunque.. un po' come avevano accennato sopra.
    Il codice del popup, come lo modificherei io, sarebbe dunque:

    Codice HTML:
    <html>
     <head>
      <title>Smyle</title>
       <link href="/blog/style_01.css" type="text/css" rel="stylesheet" />
       
       <script type="text/javascript">
        function addSmiley(code){
         var txta = window.opener.document.getElementById('textarea');
         txta.value = txta.value + ':'+ code +':' ;
         return false;
        }
       </script>
       
       <style type="text/css">
        .smiley { width:auto; background:none; display:inline; }
       </style>
       
     </head>
     <body>
      <a href="#" onclick="return addSmiley('polizia')" class="smiley"><img src="/blog/img/admin.gif"></a>
      <a href="#" onclick="return addSmiley('angel')" class="smiley"><img src="/blog/img/angel.gif"></a>
      <a href="#" onclick="return addSmiley('arg')" class="smiley"><img src="/blog/img/arg.gif"></a>
      <a href="#" onclick="return addSmiley('love')" class="smiley"><img src="/blog/img/love.gif"></a>
      <a href="#" onclick="return addSmiley('love')" class="smiley"><img src="/blog/img/XD.gif"></a>
      <a href="#" onclick="return addSmiley('up')" class="smiley"><img src="/blog/img/up.gif"></a>
     </body>
    </html>
    Come vedi nell'onclick sbriga tutto la function addSmiley in più invece di ripetere sempre gli style del link ci ho messo un class="smiley" che ho definito sopra.. ma è ovvio che la soluzione più pulita sarebbe di definirlo direttamente nel file style_01.css
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  13. #13
    Guest

    Predefinito

    solo ora ho letto i messaggi, adotterò il metodo della function e provo il codice..grazie per gli aiuti..ciao

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •