Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783

    [fancybox] finestra aperta con trigger non accetta altri comandi

    solitamente uso l'istruzione
    onclick="$.fancybox.close()"
    per chiudere la finestra aperta manualmente da link

    se invece la finestra è aperta con trigger (al caricamento della pagina) non riesco a far lavorare alcun comando all'interno. cosa manca?



    codice:
    <script type="text/javascript">
            $(document).ready(function() {
    
                $("#idElemento").fancybox().trigger('click');
                
                $('.fancybox').fancybox();
    
            });
        </script>

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non uso francybox (ne altre finestre modali) ma se metti il richiamo d'apertura nel ready non la apre?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    la questione è inversa: la finestra si apre, ma non riesco a chiuderla col link/bottone che ho sempre usato per la altre finestra che apro "manualmente". devo inserire, altre al bottone per chiudere, altre istruzioni. non mi funziona nulla se la finestra è aperta con trigger.
    posso solo chiuderla cliccando sulla pagina o sulla X di default

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ok, e questo l'avevo capito ma lanciando nel ready l'apertura della finestra senza l'uso del trigger funziona? Domanda (come detto non uso finestre modali di questo tipo ) posso aprire una finestra modale fancybox al ready? Propenderei per il si (almeno spero)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    trigger('click') serve proprio per aprirla al caricamento pagina, in sostanza simula il click sul link.

    se intendi qualcosa di diverso fammi un esempio
    Ultima modifica di Vincent.Zeno; 10-02-2015 a 21:47

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    perche richiami 2 volte fancybox? cmq dovrebbe andare: http://jsbin.com/jolufupoga/1/edit?html,css,js,output , probabilmente c'è qualche altro problema nella tua pagina

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quoto Vindav, buona la sua soluzione, risolve il problema.

    Premetto che non uso fancybox ma inizio ora a capire come funziona, quindi mi aggancio all'argomento per includere alcune cose.

    Il problema riscontrato da Vincent è dovuto al fatto che lo stesso elemento che è stato specificato come "contenuto", del fb, risulta essere anche l'elemento che fa da "trigger" (cioè che innesca l'apertura del fb stesso). Per tale motivo al click, su tale elemento, viene aperto il fb che mostra quello stesso elemento.
    Ora, per avviare l'apertura automatica del fb, viene utilizzato il trigger sul click di tale elemento. Per cui, il fb si apre mostrando l'elemento in questione. Qui si presenta il problema... cliccando su qualsiasi punto di tale elemento viene innescata nuovamente l'apertura del fb stesso. Questo inibisce quindi qualsiasi interazione su qualsiasi altro elemento figlio dell'elemento in questione.

    La questione si risolve quindi slegando l'elemento "contenuto" dall'elemento "trigger".
    Come indicato sull'esempio di Vindav, si utilizza un elemento <a> (il trigger) in cui, per l'attributo href, viene specificato il riferimento id dell'elemento da mostrare sul fb (il contenuto).
    Si veda "Inline content" al punto 4 sulla documentazione http://fancybox.net/howto.
    Riporto qui l'esempio indicato:
    codice:
    <a id="inline" href="#data">This shows content of element who has id="data"</a>
    
    <div style="display:none"><div id="data">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div></div>
    Nel nostro caso specifico però il tag <a> ci servirà solo come elemento fittizio per avviare il fb in automatico, ovvero rendendolo nascosto con display:none e forzandone l'innesco del click col trigger('click') (si veda l'esempio di Vindav).

    Chiarito il punto, suggerisco un ulteriore accorgimento per snellire ulteriormente il codice.
    Anziché indicare il tag <a> sul codice html, è possibile creare l'elemento fittizio al volo via jQuery e quindi innescarne il click, con una cosa del genere:
    codice:
    $("<a href='#idContenuto'>").fancybox().click();
    La mia è giusto un'idea.

    Una soluzione simile può essere quella di specificare il contenuto del fb passandolo all'attributo content in questo modo:
    codice:
    $("<a>").fancybox({content:$("#idContenuto")}).click();
    O, analogamente, è possibile anche creare il contenuto al volo:
    codice:
    $("<a>").fancybox({content:"<div>contenuto del fancybox</div>"}).click();
    Ultima modifica di KillerWorm; 12-02-2015 a 01:26
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    la classe fancybox serve per governare altre finestre tipiche, mentre quella in questione è governata solo tramite id (è l'unica della pagina che ha questa esigenza di visualizzazione).

    giusto ieri sera, grazie all'aiuto di KillerWorm che ringrazio , ho scoperto l'uso del link nascosto a cui attribuire il trigger per avviare l'elemento da mostrare, e quindi non entrare in conflitto logico.
    cliccando sul marcatore con l'attributo onclick="$.fancybox.close()", veniva nuovamente richiamato (con il click) l'avvio dell'elemento in questione.

    non c'è proprio alcun problema altro nella pagina...

    quindi un esempio pratico ottimizzato, che crea l'elemento a fittizio (nel caso non fosse necessario averlo a video nella pagina):

    codice:
    <script type="text/javascript">
        $(document).ready(function() {
        
        $("<a>").fancybox({content:$("#elementoDaAvviare")}).trigger("click")
        
        $('.fancybox').fancybox(); 
        
        });
    </script>
    
    ........
    
    <a class="fancybox "  href="#semplice" >box semplice</a>
    <form action="" id="semplice" style="display:none" >
    normale finestra
    <input type="button" onclick="$.fancybox.close()" value="chiudi" >
    </form>
    
    <!-- tag a solo dimostrativo, non necessario; ma potrebbe servire averlo nella pagina -->
    <a class="fancybox "  href="#elementoDaAvviare" >elementoDaAvviare</a>
    
    <form id="elementoDaAvviare" style="display:none">
        <fieldset>
        BOX avviato all'apertura delle pagina
        </fieldset>
    <input type="button" value="CHIUDI" onclick="$.fancybox.close()" >
    </form>
    ciauz

    edit: azz che tempismo!
    Ultima modifica di Vincent.Zeno; 12-02-2015 a 01:30

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.