Я попробовал некоторые решения, опубликованные здесь, но они не работают, если страница была прокручена до открытия диалогового окна. Проблема в том, что он вычисляет позицию без учета позиции прокрутки, потому что позиция является абсолютной во время этого вычисления.
Решение, которое я нашел, состояло в том, чтобы установить CSS родительского диалогового окна в фиксированное значение PRIOR для открытия диалога.
$('#my-dialog').parent().css({position:"fixed"}).end().dialog('open');
Предполагается, что вы уже инициализировали диалог с autoOpen, установленным в false.
Обратите внимание, это не работает, если размер диалогового окна изменен. Оно должно быть инициализировано с отключенным изменением размера, чтобы позиция оставалась фиксированной.
$('#my-dialog').dialog({ autoOpen: false, resizable: false });
Тщательно проверил это и пока не нашел ошибок.