2012-01-20 9 views
7

Jak widać na ten link, http://jsbin.com/ozapol/9,Jquery modalne okna dialogowe wyłączyć paski przewijania

Jquery wyłącza przewijania na niektórych wersji IE i najnowszej wersji Chrome. (Nie próbowałem jeszcze żadnego innego ...)

Czy istnieje sposób na włączenie pasków przewijania, aby móc przewijać długie, długie okno dialogowe?

Dziękujemy! Bye

Nicea rozwiązanie dla Internet Explorer (dzięki jk.)

html {overflow-y : scroll} 

Brutal obejścia dla Chrome (dzięki jk).

Na Chrome jQueryUI przechwytuje zdarzenia myszy na paski przewijania. To wygląda jak błąd, do którego odnoszą się powyższe linki. W celu usunięcia tych powiązań, trzeba rozpiąć zdarzenia każdym razem utworzyć okno modalne:

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

Istnieje Ostatnim przykładem: http://jsbin.com/ujagov/2

Odnośniki do raportów o błędach:

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

Dlaczego nie spróbować dodać pasek przewijania wewnątrz okna? – epignosisx

+0

Ponieważ to nie ma sensu w mojej aplikacji ...Przepraszam –

+0

możliwy duplikat [problemu paska przewijania z oknem dialogowym jQuery w przeglądarce Chrome i Safari] (http://stackoverflow.com/questions/1617638/scrollbar-problem-w-jquery-ui-dialog-in-chrome-and-safari) – daniloquio

Odpowiedz

5

Możesz zachować przewijania notki z:

html {overflow-y: scroll;} 

Można dodać, że CSS programowo, więc nie ma wpływu na każdą stronę witryny i ewentualnie projektu.

A może trzeba rozpiąć zdarzenia myszy, okno modalne hijacks:

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

Zobacz Scrollbar problem with jQuery UI dialog in Chrome and Safari

+0

Witam, dziękuję za odpowiedź, ale niestety to nie wygląda najlepiej. Dodałem tę część CSS do mojej próbki i nadal nie działa: http://jsbin.com/ozapol/5 –

+0

Właściwie działa to w przeglądarce Internet Explorer, ale nie działa w Chrome ... Any Idea? –

+0

@NicolasThery Działa w przeglądarce Chrome na komputerach Mac i PC. Nie wiem, dlaczego to nie działa. –

0

Dodaj następujący kod do CSS-file:

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

} 
#longdialog{ 
    height: 450px; 

} 

The przepełnienie nie działa, ponieważ wysokość została ustawiona na automatyczną, zdefiniować określoną wysokość do pojemnika div

+0

Przykro mi, ale nie chcę paska przewijania wewnątrz okna dialogowego, ale dla całej strony. Nie chcę wielu pasków przewijania w moim interfejsie. Zaktualizowałem przykład: http: //jsbin.com/ozapol/9 –