При закрытии дочерней страницы диалога сохраняйте прокрутку страницы на родительской странице. - PullRequest
0 голосов
/ 02 мая 2019

В настоящее время я работаю над новым диалоговым окном, которое открывается по ссылке на странице, и как только диалоговое окно закрывается, оно обновляет родительскую страницу, но у меня возникает вопрос, как мне сохранить текущую прокрутку родительского элемента на странице?refresh

Вот диалоговое окно Close code:


$("#dialogStatus").dialog({
            autoOpen: false,
            autoResize: true,
            resizable: false,
            width: 450,
            height: 400,
            modal: true,
            position: ['center', 40],
            close: function (event, ui) {
                var sss = $("#Id").val();
                var hNotif = $("#hiddenNotification").val();
                var ddlvalue = $('#NewFilterBy option:selected').val();
                var ddlStat = $('#StatusId option:selected').val();

                var url = window.location.href;
                var newUrl = updateQueryStringParameter(url, "Id", sss, "ddlFilter", ddlvalue, "statusFilter", ddlStat);
                window.location = newUrl;
            }
        });

Что происходит сейчас, когда я закрываю его, он обновляется, и родительский элемент при прокрутке остается в верхней части страницы

Редактировать: пробовал добавить document.location.reload(), но после добавления он теряет параметр

1 Ответ

0 голосов
/ 02 мая 2019

Вы можете попробовать добавить параметр 'scrollPosition' в строку URL, а когда документ загружен, прокрутите вниз до позиции.

$(document).ready(function(){

   //The function that scroll down
   var positionToScroll ; //You set here your variable from your server variable scrollPosition
   $(window).scrollTop(positionToScrol);


   $("#dialogStatus").dialog({
         autoOpen: false,
         autoResize: true,
         resizable: false,
         width: 450,
         height: 400,
         modal: true,
         position: ['center', 40],
         close: function (event, ui) {
             var sss = $("#Id").val();
             var hNotif = $("#hiddenNotification").val();
             var ddlvalue = $('#NewFilterBy option:selected').val();
             var ddlStat = $('#StatusId option:selected').val();

             var url = window.location.href;
             var currentScrollPosition = $(window).scrollTop(); // The position of  the scroll bar 
             var newUrl = updateQueryStringParameter(url, "Id", sss, "ddlFilter", ddlvalue, "statusFilter", ddlStat,"scrollPosition",currentScrollPosition );
             window.location = newUrl;
         }
      });


});

Редактировать: если вы не можете установить переменную JS 'positionToScroll 'с вашего сервера вы можете использовать это

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true :  decodeURIComponent(sParameterName[1]);
        }
     }
};


var positionToScroll  = getUrlParameter('scrollPosition');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...