2012-01-20 18 views
7

Come si può vedere su questo link, http://jsbin.com/ozapol/9,finestre di dialogo modali Jquery disattivare le barre di scorrimento

Jquery disattiva le barre di scorrimento su alcune versioni di IE e l'ultima versione di Chrome. (Non ho provato nessun altro ancora ...)

C'è un modo per mantenere le barre di scorrimento abilitate per poter scorrere una lunga finestra di dialogo?

Grazie! Bye

bella soluzione per Internet Explorer (Grazie a jk.)

html {overflow-y : scroll} 

soluzione Brutal per Chrome (Grazie a jk.)

Su Chrome, eventi jQueryUI dirotta del mouse su le barre di scorrimento. Questo sembra un bug che si riferisce ai link sopra. Al fine di rimuovere tali attacchi, è necessario separare gli eventi ogni volta che si crea una finestra di dialogo modale:

$("#longdialog").dialog({ 
    open: function(event, ui) { 
     window.setTimeout(function() { 
      jQuery(document).unbind('mousedown.dialog-overlay') 
          .unbind('mouseup.dialog-overlay'); 
     }, 100); 
    }, 
    modal:true 
}); 

C'è l'ultimo esempio: http://jsbin.com/ujagov/2

Collegamenti a segnalazioni di bug:

  1. http://bugs.jqueryui.com/ticket/4671
  2. http://wiki.jqueryui.com/w/page/34725121/Visual-Test-Page-Cleanup
+0

Perché non provare ad aggiungere una barra di scorrimento all'interno della finestra di dialogo? – epignosisx

+0

Perché questo non ha senso nella mia applicazione ...Scusa –

+0

possibile duplicato del [problema della barra di scorrimento con la finestra di dialogo dell'interfaccia utente jQuery in Chrome e Safari] (http://stackoverflow.com/questions/1617638/scrollbar-problem-with-jquery-ui-dialog-in-chrome-and-safari) – daniloquio

risposta

5

È possibile mantenere le barre di scorrimento abilitati con:

html {overflow-y: scroll;} 

si potrebbe aggiungere che i CSS di programmazione in modo da non interessa tutte le pagine del sito e, eventualmente, il design.

E, potrebbe essere necessario separare gli eventi del mouse che la finestra di dialogo modale dirotta:

$("#longdialog").dialog({ 
    open: function(event, ui) { 
     window.setTimeout(function() { 
      jQuery(document).unbind('mousedown.dialog-overlay') 
          .unbind('mouseup.dialog-overlay'); 
     }, 100); 
    }, 
    modal:true 
}); 

Vedi Scrollbar problem with jQuery UI dialog in Chrome and Safari

+0

Ciao, grazie per la tua risposta, ma sfortunatamente questo non sembra funzionare. Ho aggiunto questa parte CSS nel mio esempio e non funziona ancora: http://jsbin.com/ozapol/5 –

+0

In realtà funziona su Internet Explorer ma non su Chrome ... Qualche idea? –

+0

@NicolasThery Funziona per me su Chrome su Mac e PC. Non sono sicuro del motivo per cui non sta funzionando per te. –

0

Add seguente codice al CSS-file:

.ui-dialog .ui-dialog-content { 
    overflow-y: scroll; 

} 
#longdialog{ 
    height: 450px; 

} 

Il overflow non funziona perché l'altezza era impostata su auto, definire un'altezza specifica per il div del contenitore

+0

Mi dispiace ma non desidero la barra di scorrimento all'interno del dialogo ma per l'intera pagina. Non voglio molte barre di scorrimento nella mia interfaccia. Ho aggiornato l'esempio: http: //jsbin.com/ozapol/9 –

Problemi correlati