【问题标题】:Keep Page Scroll on parent page when closing the Dialog Child Page关闭对话框子页面时在父页面上保持页面滚动
【发布时间】:2019-05-02 07:33:11
【问题描述】:

我目前正在处理一个新对话框,该对话框由页面中的链接打开,一旦对话框关闭,它会刷新父页面,但我的问题是如何让父页面保持当前滚动刷新

这里是对话框关闭代码:


$("#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(),但添加后会丢失参数

【问题讨论】:

    标签: javascript c# jquery html dialog


    【解决方案1】:

    您可以尝试在您的 URL 字符串中放置一个参数“scrollPosition”,并在加载文档时向下滚动到该位置。

    $(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');
    

    【讨论】:

    • 是否可以不使用URL参数获取当前页面滚动?
    • 是的,您可以使用 LocalStorage 或 SessionStorage,这是一个示例:您可以使用这篇文章的答案:stackoverflow.com/questions/17591447/…,在重新加载之前,您可以在 LocalStorage 'positionToScroll' 中设置一个属性,当您重新加载并获取您的值,您可以重置滚动位置以避免无限重复。如果您不明白该怎么做,我可以在我之前的帖子中编辑一个示例 :)
    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多