Accesso non consentito - Necessaria Registrazione

Informazioni

Topic Pubblico
5 Posts di 2 Utenti.

Segui questo topic

Informazioni

Puoi utilizzare una versione personalizzata di Textile nei post, nelle pagine del wiki e negli articoli.

Inoltre sono state aggiunte delle personalizzazioni per facilitare la scrittura, ulteriori informazioni sono raggiungibili qui.

Problema finestre innestate con Prototype

Wed, 20 Jan 2010, 1:13am #1
vitathebest
Utente
Registrato: Jan, 2010
Ultima visita: circa 1 un mese fa
Posts: 3

salve a tutti, cercherò di esporre il problema il più chiaramente possibile.

Utilizzo la javascript class Window, che si basa sul framework Prototype e mi permette di creare finestre draggabili e ridimensionabili molto carine e utili . Inoltre per il debug e il collaudo degli script uso la console di Firebug, plugin del browser Mozilla Firefox.

Ora: quando provo ad aprire una window con dentro un contenuto qualsiasi (ad esempio un link ad una pagina del mio sito) funge tutto benissimo.

Se però in una finestra aperta in questo modo pongo all´interno un link che mi dovrebbe aprire a sua volta una nuova finestrella, firebug mi segnala questo errore:

uncaught exception: [Exception... "Cannot convert WrappedNative to function" nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)" location: "JS frame :: utenti_online.php :: onclick :: line 1" data: no]

Prima di decidermi a postare qui ho cercato in lungo e in largo una possibile soluzione, ma non sono riuscito a capire da cosa possa dipendere ne come porre rimedio Sad Qualche idea?

Offline
Wed, 20 Jan 2010, 9:09am #2
admin
Amministratore
Registrato: Feb, 2009
Ultima visita: circa 1 un mese fa
Posts: 14

Pirma di tutto benvenuto Smile

Apprezzo il tuo atteggiamento di cercare una soluzione… resta comunque questo il modo migliore d’imparare. Comunque, c’è una frase che non capisco bene e sarebbe Se però in una finestra aperta in questo modo pongo all´interno un link che mi dovrebbe aprire a sua volta una nuova finestrella, ci posteresti un esempio? Credo che sia un problema di richieste AJAX però potrebbe anche darsi che sia un problema di tipi ( omagari altro ancora Laugh) però per capire ho bisogno di un esempio…

Offline
Wed, 20 Jan 2010, 2:25pm #3
vitathebest
Utente
Registrato: Jan, 2010
Ultima visita: circa 1 un mese fa
Posts: 3

Grazie per il benvenuto Smile

Dunque, caso reale: ho una pagina menu.php nella quale è presente un link per visualizzare i presenti online. Nell’evento onclick ho inserito la creazione della finestra

<a href="#" onClick="new Window({url: 'utenti_online.php', className: 'mac_os_x', width: 600 , height:500, destroyOnclose: true }).showCenter();"> utenti online </a>

e fin qui, come detto, nulla di strano. Clicco sul link, e prototype mi apre la bella finestrella con dentro la tabella dei presenti.

Nella pagina utenti_online.php, contenente la tabella, il nome di ogni presente è a sua volta un link, che conduce alla sua scheda personale. Se questo link lo apro con il classico href=”scheda.php?nome”, la pagina viene aperta nella finestra stessa, e ancora una volta nessun problema.

Se invece volessi aprire la scheda in un altra window di prototype, ecco qui ottengo l’errore. Infatti pur inserendo nell’onclick lo stesso codice di prima mi salta fuori l’exception di cui sopra.

Spero di essere stato più chiaro ^^ mi scuso se risulta ancora un pò caotico ma non riuscirei a semplificarlo più di cosi

Offline
Wed, 20 Jan 2010, 3:13pm #4
admin
Amministratore
Registrato: Feb, 2009
Ultima visita: circa 1 un mese fa
Posts: 14

Eccoti Smile

Ti giuro che non ci avevo capito molto dal primo post. Comunque adesso la situazione mi è chiara e, anche se non posso darti certezza, non credo sia possibile realizzare il tuo caso d’uso con le finestre di prototype. Mi ricordo che quando usavo prototype con frequenza non riuscii a implementare questo caso particolare. Mi spiace non esserti molto d’aiuto con il tuo problema specifico… comunque se risolvi facci sapere ci farò molto piacere Smile

Offline
Wed, 20 Jan 2010, 4:19pm #5
vitathebest
Utente
Registrato: Jan, 2010
Ultima visita: circa 1 un mese fa
Posts: 3

Allora. Poichè ho la testa dura come un caprone, mi sono smazzato di prove e ho fatto un piccolo passo avanti:

In effetti un errore mio di fondo c’era, perchè stranamente anche se la finestra di prototype è a tutti gli effetti un div, e quindi inserisce del contenuto nella pagina stessa (menu.php) è necessario che nella pagina richiamata (utenti_online.php) vengano ripetuti nell’head

<script type="text/javascript" src="js/prototype.js"> </script> <script type="text/javascript" src="js/window.js"> </script>

per far funzionare a sua volta l’evento di creazione. Sistemato questo particolare, l’errore scompare e riesco in effetti ad aprire la finestra con la scheda dell’utente in una nuova window. (olè!) Ma a questo punto sorge un nuovo problema, forse (mi auguro) più facile da risolvere: la finestra della scheda, è a tutti gli effetti all’interno della prima finestra (la lista degli utenti) e non può uscire dai margini di quest’ultima.

Dalla documentazione della window.js leggo che nel costruttore della finestra c’è, tra gli altri parametri, parent. Questo mi dovrebbe pemrettere di scegliere la destinazione nel quale aprire la mia finestra. Ma se provo a settare come parent un div presente in menu.php, il solito Firebug mi avverte con:

this.options.parent is null [Break on this error] this.options.parent.insertBefore(win, this.options.parent.firstChild); window.js (riga 629)

come se in il div di questa finestra non avesse un genitore :/ Admin non uccidermi ti prego XD

Ultima modifica Wed, 20 Jan 2010, 4:20pm di vitathebest

Offline