Barre de défilement problème avec jQuery UI dialog dans Chrome et Safari
Je suis à l'aide de l'INTERFACE utilisateur de jQuery dialogue avec modal=true
. Dans Chrome et Safari, cela désactive le défilement via la barre de défilement et les touches du curseur (le défilement avec la molette de la souris et de la page haut/bas marche toujours).
C'est un problème si le dialogue est trop grande pour tenir sur une seule page - utilisateurs sur un ordinateur portable frustré.
Quelqu'un l'a posée cette il y a trois mois sur le jQuery bug tracker - http://dev.jqueryui.com/ticket/4671 - il ne ressemble pas à la fixation, elle est une priorité. 🙂
Si quelqu':
- a un correctif pour cela?
- ont suggéré une solution qui permettrait de donner une vie décente de la convivialité de l'expérience?
Je suis en train d'expérimenter avec la souris /scrollto sur les bits de la forme, mais c'est pas une super solution 🙁
EDIT : accessoires de Rowan Beentje (qui n'est pas sur DONC afaict) pour trouver une solution à cette question. jQuery UI empêche de défilement par la capture de la mouseup /les événements mousedown. Donc le code ci-dessous semble résoudre le problème:
$("dialogId").dialog({
open: function(event, ui) {
window.setTimeout(function() {
jQuery(document).unbind('mousedown.dialog-overlay')
.unbind('mouseup.dialog-overlay');
}, 100);
},
modal: true
});
Utiliser à ses risques et périls, je ne sais pas ce que les autres unmodal comportement déliaison ce genre de choses, pourrait permettre d'.
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord avec les précédentes affiches en ce que si le dialogue ne fonctionne pas pour vous, il peut être bon de revoir votre conception. Cependant, je peux vous offrir une suggestion.
Pourriez-vous mettre la boîte de dialogue contenu à l'intérieur d'un div scrollable? De cette façon, au lieu de la page entière de devoir faire défiler, tout le contenu à l'intérieur de la div aurait besoin pour faire défiler. Cette solution de contournement devrait être assez facile à faire trop.
Vous pouvez utiliser ce code : jquery.ui.dialog.patch.js
Il a résolu le problème pour moi. Espérons que cela soit la solution que vous cherchez.
Alors que je suis d'accord, les gens dans le parti de ne pas avoir un dialogue qui est plus grand que la fenêtre d'affichage, je pense qu'il y a des cas où le défilement peut être nécessaire. Une boîte de dialogue peut être très bon dans une résolution supérieure à la résolution de 1024 x 768, mais rien de moins semble écrasé. Ou de dire, par exemple, vous ne voulez jamais une boîte de dialogue pour afficher plus de l'en-tête de votre site. Dans mon cas, j'ai des publicités qui de temps en temps flash z-index de problèmes, donc je ne veux plus jamais les boîtes de dialogue pour afficher au-dessus d'eux. Enfin, il est mauvais en général pour prendre toute sorte de contrôle commun, telles que le défilement, loin de l'utilisateur. C'est un problème distinct de la taille de la boîte de dialogue est.
Je serais intéressé de savoir pourquoi la ces événements mousedown et mouseup sont là en premier lieu.
J'ai essayé la solution que alexis.kennedy fourni et il fonctionne pause sans casser quoi que ce soit que je peux voir dans n'importe quel navigateur.
J'solution à cette situation par la désactivation de la boîte de dialogue modale mode et montrant la superposition manuellement:
Je crois qu'avoir de trop grosses boîtes de dialogue est à l'encontre de votre décent de l'utilisabilité de l'expérience de l'exigence. Même si vous n'avez pas à avoir une solution de contournement en raison de l'jQuery UI Dialog bug, j'aurais de se débarrasser de ces grandes boîtes de dialogue. De toute façon, je ne comprends pas pourquoi il peut y avoir de "l'extrême" cas dans lesquels vous avez besoin de s'adapter, donc...
Cela dit, il serait certainement utile si vous joins quelques captures d'écran que vous demandez une question au sujet d'une conception, mais nous ne pouvons pas le voir. Mais je comprends que vous pourriez ne pas être en mesure prête à montrer le contenu de celui-ci c'est très bien. Ce sont mes aveugle devine; espère que vous les trouverez utiles:
Sans être en mesure de voir le design, je suppose que c'est aussi loin que je peux aller.
Il existe une solution de contournement qui délie les bindings de l'événement. Cela ajoute les éléments suivants dans l'ouvert: le cas de la boîte de dialogue :
Cela fonctionne ... mais c'est moche
--de https://github.com/jquery/jquery-ui/pull/230#issuecomment-3630449
A fonctionné comme un charme dans mon cas.
C'est un bug qui a été depuis fixe:
http://bugs.jqueryui.com/ticket/4671
Avez-vous essayé de mon extension de la boîte de Dialogue? http://plugins.jquery.com/project/jquery-framedialog
Utiliser le code ci-dessous. Cela fonctionnera très bien.