Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9

    chiamare metodi applet da javascript tra pagine diverse

    Buonasera a tutti,

    mi sono affacciato da poco sul mondo della programmazione web e ho riscontrato un problema dal quale non riesco ad uscirne. Sto facendo un sito in cui c'è una pagina principale dove simulo un frame in alto e uno laterale usando i css. Nella parte centrale (quella che dovrebbe quindi cambiare) ho incorporato, usando la tag object, un'altra pagina web fatta da me. In questa seconda pagina html c'è un form del quale vorrei convalidare i dati inseriti dall'utente, tutto questo mediante una funzione javascript presente in questa stessa pagina. Dopodiché vorrei che questa funzione javascript inviasse tali dati ad una applet incorporata tramite una seconda tag object nella pagina html principale (quella in cui ho simulato i frame per intenderci). Sarebbe possibile quindi richiamare dei metodi della applet java (presente nella pagina principale) da una funzione javascript presente nella pagina html incorporata nella prima? Vi faccio questa domanda perchè all'interno della funzione javascript ho provato a richiamare il DOM della pagina principale ma senza successo. Il codice che uso è il seguente

    window.parent.document.ConnectionApplet.setUsernam e(username);

    In cui ConnectionApplet è l'attributo name del tag object che incorpora l'applet java

    Grazie a tutti

    Hicarus

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Invece di descriverla a parole, facci vedere il codice dell'intreccio/sequenza/nidificazione/struttura dei vari div e oggetti coinvolti... tanto per capire dom, gerarchie, dipendenze
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9
    Chiedo venia...

    Codice della pagina principale, l'ho chiamata (momentaneamente) terzo.html (è il terzo tentativo del sito )

    codice:
    <!DOCTYPE html> 
    <html lang="it"> 
           <head> 
                <title>Simulare frames con i CSS: testata e colonna sinistra fissi</title> 
                <style type="text/css" media="screen">@import "stile.css";</style> 
                <!--[if IE]>                     
                       <link href="stileie.css" rel="stylesheet" type="text/css" media="screen"> 
                <![endif]--> 
           </head> 
           <body> 
                 <object name="ConnectionApplet" type="application/x-java-applet" height="0" width="0"> 
                 <param name="code" value="ConnectionApplet.class" /> 
                 <param name="archive" value="file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\Iregnitalici.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\commons-codec-1.6.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\commons-logging-1.1.1.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\fluent-hc-4.2.1.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\httpclient-4.2.1.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\httpclient-cache-4.2.1.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\httpcore-4.2.1.jar,file:///C:\Users\Marco\Documents\NetBeansProjects\Iregnitalici\dist\lib\httpmime-4.2.1.jar" /> 
                  </object> 
                  <div id="content"> 
                          <object id="foo" name="foo" type="text/html" data="loginForm.html">     
                          </object> 
                  </div> 
                  <div id="header">
                         <h1>Titolo del sito</h1>
                  </div> 
                  <div id="sidebar">
                         
    
    Menu di sinistra
    
    
                  </div> 
          </body> 
    </html>
    Codice della pagina loginForm.html

    codice:
    <!DOCTYPE html> 
    <html> 
          <head> 
                <title>Pagina di login</title> 
                         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
                               <script language="JavaScript"> function loginValidator(f) { 
                                   var username, password; 
                                   username = f.login.value; 
                                   password = f.pass.value;               
                                   window.parent.document.ConnectionApplet.setUsername(username);  
                                   window.parent.document.ConnectionApplet.setPassword(password);   
                                   if(!(window.parent.document.ConnectionApplet.connessionePost()))  
                                  { 
                                       alert("controlla di aver inserito username e password corretti"); 
                                       return false; 
                                  } 
                                  else 
                                  {  
                                       return true; 
                                  } 
                                  return false; 
                                  } 
                              </script> 
          </head> 
          <body> 
           <form action="http://www.iregni.com/ConnexionKC.php" method="POST"    onsubmit="return loginValidator(this);"> 
                <table width="100%" cellspacing="0" cellpadding="0" border="0"> 
                    <tr> 
                         <td>
                              <label for="login" >Il mio login</label>
                         </td> 
                         <td>
                              <input size="17" class="fv_login" id="login" name="login" type="text" maxlength="30" />
                         </td> 
                    </tr> 
                     <tr> 
                         <td>
                             <label for="pass">Password</label>
                        </td> 
                         <td>
                              <input size="17" class="fv_rempli fv_egalite_reference" id="pass" name="password" type="password" maxlength="30" />
                        </td> 
                    </tr> 
                     <tr> 
                         <td colspan="2">
                             <span class="textePetit lien" id="MessageErreur" style="color:red;">
                             </span> 
                         </tr> 
                     <tr> 
                         <td colspan="2"><input value="ok" type="submit">
                         </td> 
                     </tr> 
              </table> 
          </form> 
       </body> 
    </html>
    Ho la certezza che la funzione javascript parta, peccato che si pianta quando cerca di comunicare i dati alla applet, e come conseguenza il form viene validato ugualmente.

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    window.parent richiama (richiamerebbe) alla finestra dalla cui la presente si è generata.
    Ad esempio, se questa pagina di log-in è il contenuto di una pop-up lanciata appunto dalla pagina genitrice (parent window).

    Ma è così la tua situazione?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9
    La pagina di log-in non è il contenuto di una pop-up, ma è integrata nella pagina principale all'interno di una tag object. Speravo che window.parent funzionasse ugualmente

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non avendo mai usato questa tecnica non posso assicurare che funzioni... ma prova tu da parte mia a sostituire top.document al tuo window.parent.document
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9
    Niente da fare purtroppo. Ho messo delle alert dopo le varie chiamate ai metodi, e come prima cosa ho messo questa:

    alert(top.document.getElementsByTagName("*").lengt h);

    Non mi si apre alcuna finestra

    Ovviamente la applet parte correttamente, ma come si vede dalla riga di codice che ho messo qui sopra, il problema è che non viene preso il DOM della pagina principale. Se può servire sto usando l'ultima versione di chrome.

    Grazie comunque per l'aiuto

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che non capisco perché vuoi usare un tag object per includere delle pagine html, quando lo stesso è "consigliato" per oggetti multimediali hai provato cosi:
    nella pagina principale (terzo.html) nella head metti questa funzione
    codice:
    <script>
    function Objet(){
    alert(document.getElementsByTagName("*").length)
    }
    </script>
    che richiamerai dalla pagina loginForm.html Object solo per capire se tra le due pagine c'è dialogo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9
    Ho usato la tag object per includere la pagina html perché ho notato che con una iframe c'erano diversi problemi legati allo scroll (veniva tagliata la pagina che appare una volta che l'utente si è loggato).

    Ho inserito la nuova funzione javascript nella pagina principale e il suo link nel body della pagina inclusa. Purtroppo non accade nulla quando nella pagina inclusa clicco sul link object. A questo punto credo sia il caso di tornare alla soluzione con l' iframe.

    Grazie per l'aiuto

    Aggiornamento:

    Ho fatto alcuni test sia con chrome che con internet explorer e firefox e si comportano tutti in modo diverso:

    internet explorer: se includo la pagina di login nell'object, lo script di validazione del form non riesce a restituirmi il DOM della pagina principale e addrittura, caricata la pagina successiva al login, mi sparisce la visualizzazione con cui simulavo i frame. Se uso un iframe invece dell'object, tutto funziona a dovere.

    Firefox: funziona tutto in tutti i casi

    Chrome: sia che io includa il login in una tag object, sia che usi l'iframe, sembra proprio che non riescano a comunicare tra loro la pagina inclusa e quella che include.

    A questo punto mi conviene usare un iframe anche se non so come risolvere il problema aggiuntivo in chrome.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    9
    Ho scoperto che anche con chrome le due pagine possono comunicare, ma solo se sono caricate su un server.

    Ora però si presenta un ulteriore problema: javascript non riesce comunque a comunicare con l'applet java.

    Ho provato anche a fare così:

    ho messo nella pagina principale

    Object

    e ho definito sempre in quella pagina la funzione Object nel seguente modo:

    function Object(){
    alert(document.getElementById("ConnectionApplet"). test());
    }

    in cui ConnectionApplet è l'id della tag object che contiene l'applet.

    A questo punto scrivo pure il codice della applet:

    codice:
    public class ConnectionApplet extends JApplet { 
    private String username; 
    private String password; 
    private DefaultHttpClient httpclient = new DefaultHttpClient(); 
    
    public String test() { 
        String s; 
        s = "pippo"; 
        return s; 
    } 
    
    public boolean prova() { 
         String s; 
         s="pluto"; 
         return true; 
    } 
    
    public String getUsername() { 
        return username; 
    } 
    
    public void setUsername(String username) { 
         this.username = username; 
    } 
    
    public String getPassword() { 
         return password; 
    }
    
    public void setPassword(String password) { 
        this.password = password; 
    }
    
    [altri metodi]
    
    }
    Ora, il buonsenso mi suggerisce che quindi la funzione javascript Object dovrebbe, cliccando sul link che ho posizionato nella pagina principale, mostrarmi una finestra con scritto "pippo" ma invece non mi appare nulla. Testato su firefox.

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.