Come nascondere il bottone di chiusura di un dialog jQuery UI

In attesa del rilascio ufficiale di jQuery UI 1.7 (eh già, il team di sviluppo di jQuery ha deciso che rilascerà la versione come 1.7, causa confusione), dove forse verrà inserita una opzione per eliminare il bottone di chiusura di un dialogo, ecco come risolvere velocemente il problema con l’attuale 1.6rc6:

1
2
3
4
// Agendo sull'evento open del dialogo
$('#mydialog').dialog( {
    open: function () { $('.ui-dialog-titlebar-close').css('display','none'); }
});
  • giuseppe

    Salve. Vorrei chiedere un aiuto.
    Ho appena iniziato a studiare jquery.
    Vorrei realizzare una piccola funzione, tipo quella usata nelle gallerie flash, per aprire una finestra dialog e oscurare il background. Il mio scopo è questo:
    Ho un buttone (immagine) che permette di scaricare un pdf. Vorrei aprire un dialog che oscura il resto e avvisa di attendere mentre viene scaricato il pdf. Come posso fare????
    Grazie per l’aiuto.
    giuseppe

  • http://www.undolog.com Giovambattista Fazioli

    @giuseppe: nel caso specifico penso che non sia possibile fare esattamente quello che chiedi. Prima di tutto non stai “caricando” un pdf, come potrebbe essere nel caso di un’immagine, bensì lo fai scaricare agli utenti. Alcuni, infatti, potranno scegliere di salvarlo su disco altri, tuttavia, potrebbe scegliere di aprirlo, sostituiendo di fatto la tua pagina web con il contenuto pdf.
    A parte questo, non avresti comunque modo di sapere quando il pdf è stato “scaricato” completamente! Quindi l’eventuale dialog rimarrebbe aperto per l’eternità.
    Inoltre, durante il download di un file (come nel tuo caso), ci pensa il browser a mostrare l’avanzamente del download e un tuo eventuale messaggio sarebbe ridondante.
    Fammi sapere se ho capito bene la questione e se hai altre domande.

  • giuseppe

    Ciao e grazie d’avvero per super veloce risposta.
    In effetti hai ragione, e forse non sono stato chiaro io ;-p.
    Allora, il fatto è questo:
    Io ho già realizzato tutta l’applicazione ,in java2ee ,jsp, e permette di scaricare il pdf premendo il pulzante. In effetti automaticamente consente all’utente di scegliere se aprire esternamente il pdf o salvarlo.
    Fino qui tutto OK. Ora ho l’esigenza (tempo di attesa variabili e alcuni utenti ricliccano più volte nonostante l’avanzamento del download del browser) , di constringere l’utente ad attendere oscurando completamente lo sfondo, come ho visto permette dialog.
    La mia necessità è questa: visualizzare il dialog e farlo chiudere quando appare la finestra (scegliere o salvare). Spero di averti aiutato e se sia possibile usare jquery (visto che lo sto studiando oggi) oppure fare in altro modo. Grazie d’avvero
    Giuseppe

  • http://www.undolog.com Giovambattista Fazioli

    @giuseppe: ok, se vuoi possiamo suddividere il problema in due: aprire un dialog o oscurare lo sfondo, e intercettare lo scaricamento del pdf. Per il primo problema la soluzione è abbastanza semplice e, se vuoi, non richiede necessariamente jQuery. Per creare un effetto di oscuramento, si può usare una semplice tecnica, ovvero quella di inserire un div (di dimensioni 100%) subito dopo il tag body, inizialmente impostato invisibile display:none e in posizione assoluta position:absolute con il background a qualsiasi colore tu voglia e renderlo visibile al momento opportuno. Impostandolo poi con un’alpha adeguato si crea l’effetto di oscuramento desiderato.
    Per quanto riguarda poi il problema dell’intercettare l’apertura del dialogo del browser credo, che per questioni di sicurezza, non sia proprio possibile farlo. Comunque è argomento interessante e prova a dare un’occhiata in giro se c’è qualche modo per capire se il dialogo sdi scaricamento “sta” per essere aperto…

  • giuseppe

    Ciao. Grazie per il chiarimento. Sto testando la tua idea, che sembra funzionare. Volevo chiederti un’altra cosina: Si puo utilizzare onLoad() sullo stesso div? in pratica cosi quando viene richiamata(ricaricata)la pagina si chiude la finestra.O mi suggerisci altro. L’importante che avvenga automaticamente senza ricliccare.
    Per quanto riguarda la parte la seconda parte, servlet ecc, per gestire l’intero processo ,dal momento di apertura della “pop-up” alla chiusura (quindi gestire l’intecettamento del download) credo di poterlo realizzare e sono a buon punto. Magari se finisco il tutto posso postarlo qui, magari potrà servire a qualcuno ;-).
    Grazie

  • luciano

    salve approfitto per chiedere:

    in una mia pagina jsp ho inserito jquery per la visualizzazione di un dialog.

    la visione del dialog avviene al click di un tasto che chiama una funzione js al cui interno c’è:

    
    
    1
    2
    3
    4
    5
    6
    7
    $("#mio_dialog").dialog({
            resizable: false,
            width: 385,
            dialogClass: 'ui-dialog-cmd',
            position: [$(obj).position().left-375,$(obj).position().top-$(document).scrollTop()+135],
           
            });

    il dialog si apre correttamente ma non riesco a farlo chiudere ( o per meglio dire nascondere) quando clicco all’esterno della sua zona di competenza.

    Non devo usare ne l’escape ne il tasto di chiusura.

    C’è un modo per far si che non appena si clicca in una parte qualsiasi dello schermo che non sia il dialog questi viene nascosto?

    grazie