Une réponse plus complète, qui utilise la réponse de Nick de manière plus flexible, peut être trouvée ici .
Une adaptation du code de pertinence de ce fil est ci-dessous. Cette extension crée essentiellement un nouveau paramètre de dialogue appelé autoReposition qui accepte un vrai ou un faux. Le code tel qu'il est écrit définit par défaut l'option sur true. Mettez-le dans un fichier .js de votre projet afin que vos pages puissent en tirer parti.
$.ui.dialog.prototype.options.autoReposition = true;
$(window).resize(function () {
$(".ui-dialog-content:visible").each(function () {
if ($(this).dialog('option', 'autoReposition')) {
$(this).dialog('option', 'position', $(this).dialog('option', 'position'));
}
});
});
Cela vous permet de fournir un "vrai" ou "faux" pour ce nouveau paramètre lorsque vous créez votre boîte de dialogue sur votre page.
$(function() {
$('#divModalDialog').dialog({
autoOpen: false,
modal: true,
draggable: false,
resizable: false,
width: 435,
height: 200,
dialogClass: "loadingDialog",
autoReposition: true, //This is the new autoReposition setting
buttons: {
"Ok": function() {
$(this).dialog("close");
}
}
});
});
Désormais, cette boîte de dialogue se repositionnera toujours. AutoReposition (ou ce que vous appelez le paramètre) peut gérer toutes les boîtes de dialogue qui n'ont pas de position par défaut et les repositionner automatiquement lorsque la fenêtre est redimensionnée. Comme vous le définissez lorsque vous créez la boîte de dialogue, vous n'avez pas besoin d'identifier une boîte de dialogue d'une manière ou d'une autre, car la fonctionnalité de repositionnement est intégrée dans la boîte de dialogue elle-même. Et la meilleure partie est que, comme cela est défini par boîte de dialogue, vous pouvez demander à certaines boîtes de dialogue de se repositionner et d'autres restent là où elles sont.
Crédit à l'utilisateur scott.gonzalez sur les forums jQuery pour la solution complète.