2010-04-30 5 views
1

J'utilise la boîte de dialogue jquery ui pour une boîte de dialogue pop-up modale. Cela fonctionne très bien dans Firefox/Chrome mais terrible dans ie6.jquery ui et notre très cher ami, IE6

Problème: Lorsque je montre la boîte de dialogue dans IE6, la fenêtre du navigateur s'agrandit et défile automatiquement vers le bas. L'augmentation de la hauteur et le défilement automatique sont égaux à la hauteur de la boîte de dialogue jquery.

je peux faire défiler et puis utiliser la boîte de dialogue comme d'habitude, mais le comportement où il pousse la fenêtre et tombe est exaspérante inacceptable.

Voici comment je lance la fenêtre:

<div id="dialogWindow"></div> 

... 

     $(document).ready(function() { 
      var $dialog = $("#dialogWindow").dialog({ 
       autoOpen: false, 
       modal: true, 
       minWidth: 560, 
       width: 560, 
       resizable: "true", 
       position: "top" 
      }); 

      $('.addButton').click(function(e) { 
       e.preventDefault(); 
       $('#dialogWindow').load('http://myurl'); 
       $dialog.dialog('open'); 
      }); 
     }); 

Je suis déjà en utilisant le plugin bgiframe pour jquery qui est la clé pour les questions de recouvrement IE6. Mais cela semble sans rapport avec cela. Est-ce que quelqu'un a déjà vu ça et a trouvé un travail?

Répondre

2

j'ai vu ce comportement avant et elle est généralement causée par la superposition. Lorsque vous utilisez l'option {modal: true}, une superposition est créée et rendue avec le support bgiframe si le plug-in est chargé.

Tout d'abord, essayez de {modal: false} et voir si vous ne recevez pas soufflage page alors que nous le connaissons est la superposition.

il y a quelques choses à vérifier si tel est le coupable;

  • vérifier que les styles pour la superposition chargent correctement, vous devrez inclure le jquery-ui dialog.css
  • essayer d'expérimenter avec la position: et float: styles
  • essayez de déplacer votre balisage de dialogue juste au-dessus de la balise </body >, permettant à la superposition modale de s'échapper correctement.
+0

Y compris le jquery-ui.dialog.css explicitement fixé. Je pensais que le .css était déjà défini dans mon jquery-ui-1.8.1.css lié, mais peut-être que c'est bidon ou quelque chose. Quoi qu'il en soit, merci beaucoup! – bradjive

+1

Après avoir recherché le problème encore plus loin, la ligne précise du CSS .ui-dialog qui était le problème était la position: relative. Changement de position: absolute et ie6 redevient heureux. – bradjive

0

J'ai eu un problème similaire à un moment donné.

$('.addButton').click(function(e) { 
    e.preventDefault(); 
    $('#dialogWindow').load('http://myurl'); 
    var y = window.pageYOffset; 
    var x = window.pageXOffset 
    $dialog.dialog('open'); 
    window.scrollTo(x, y); // horizontal and vertical scroll targets 
}); 

Ce que le ci-dessus devrait faire est de saisir vos coordonnées de défilement actuelles et les enregistre. Une fois la boîte de dialogue ouverte, revenez à la position précédente en mémoire. Devrait être presque instantanée et invisible par l'utilisateur.

+0

Merci pour la réponse rapide. Cela fait revenir à la boîte de dialogue ouverte, mais la taille de la fenêtre augmente encore, ce qui crée un espace géant en bas. Cette solution réagit au problème et aux codes, mais ne résout pas le problème. – bradjive