【问题标题】:Differentiate between button click and javascript page reload区分按钮单击和 javascript 页面重新加载
【发布时间】:2015-10-26 14:59:08
【问题描述】:

我试图区分页面点击和自动重新加载。自动重新加载是通过下面的 javascript 完成的。

var pageReload = {
Initialize: function () {
      window.setTimeout("location.reload(true);", 60000);
}
pageReload.Initialize();

我试图在上面的代码中设置一个隐藏变量,我试图检查Page_PreRender 中的更改值以了解页面点击和自动重新加载之间的区别。

var hdnReloadType = document.getElementById('<%=hdnReloadType.ClientID%>');
hdnReloadType.value = "1";

在 PreRender 之后加载 javascript,我知道如何继续。

有什么想法吗?

【问题讨论】:

    标签: javascript asp.net .net vb.net


    【解决方案1】:

    感谢大家的回复。

    因为我使用的是 asp.net,所以我能够从 Request 对象中捕获上一页点击 url,并从那里确定这是页面自动重新加载还是按钮点击。查询字符串重新加载选项也很棒,但我们不想将它暴露给用户。此解决方案适用于我的情况。

    【讨论】:

      【解决方案2】:

      您可以向 URL 添加一个“重新加载”参数,而不是仅仅执行 reload()。如果我们使用类似于this answer 中的replaceUrlParam() 函数,我们可以说:

      var pageReload = {
        Initialize: function () {
          window.setTimeout(
            function() {
              var url = replaceUrlParam(window.location.href, 'reloaded', '1');
              window.location.href = url;
            },
            60000
          );
        }
      }
      pageReload.Initialize();
      

      现在,当页面被自动重新加载时(并且仅在那时),查询字符串将包含“reloaded=1”。

      【讨论】:

        【解决方案3】:

        当您的函数重新加载页面时,您始终可以使用localStorage 留下面包屑:

        localStorage.setItem( 'page-reloaded', 'true' );
        

        当页面加载时,检查面包屑:

        var reloaded = localStorage.getItem('page-reloaded') || false;
        

        然后清理:

        localStorage.removeItem('page-reloaded');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-13
          • 1970-01-01
          • 2023-03-13
          • 2017-04-30
          • 2018-10-15
          • 2021-03-01
          • 1970-01-01
          相关资源
          最近更新 更多