【问题标题】:Confirm redirection from page in javascript在 javascript 中确认从页面重定向
【发布时间】:2015-03-11 06:53:49
【问题描述】:

我正在开发包含三个页面的 asp.net 网站

page1.aspx page2.aspxpage3.aspx

如果用户从page1 重定向,我希望出现要求确认的警报框。为此,我编写了以下代码

window.onbeforeunload = function () {            
        return 'Are you sure you want to leave?';
    };

但是这段代码在每个postback 到服务器上运行,包括按F5。 我希望此代码仅在用户重定向到剩余两个页面中的任何一个时运行

怎么会这样??

【问题讨论】:

    标签: javascript c# asp.net response.redirect


    【解决方案1】:

    仅在页面中的 javascript onload 事件中尝试此代码

    if(confirm("Are you sure you want to leave?"))
    {
    //redirect to next page
    return false
    }
    

    【讨论】:

    • pages only 的意思是什么。请澄清我无法理解这一行
    【解决方案2】:

    window.onbeforeunload 中处理 可能不是直接的方法,因为每次加载页面时都会显示警报消息。

    您可以做的是在 DOM 对象中调用确认 js 函数,这可能会将用户带到不同的页面。

    例如,假设下面的锚标记将用户带到第二页:

    <a id="pageTwoAnchorTag" runat="server" href="~/Page2.aspx">Page 2</a>
    

    当用户想要进入第 2 页时,您可以添加以下 onclick 事件以获得您的确认:

    <a id="pageTwoAnchorTag" runat="server" onclick="return confirm('Are you sure you want to leave?')" href="~/Page2.aspx">Leave Records</a>
    

    【讨论】:

      【解决方案3】:

      仅在几个地方要求确认可能并不完全令人满意,因为它不会在所有需要的情况下触发。例如,当您关闭浏览器选项卡或窗口时,您的数据将会丢失。

      我建议做相反的事情:像你已经做的那样注册 onbeforeunload,但包括一个“守卫”,你可以在任何应该触发确认的操作上禁用它(即在回发中):

      window.shouldconfirm = true;
      window.onbeforeunload = function () {
          if (shouldconfirm) {
              return 'Are you sure you want to leave?';
          }
      };
      

      注册回发执行之前发生的事件(例如按钮点击事件等)。在这些地方,禁用确认:

      window.shouldconfirm = false;
      

      回发会触发 onbeforeunload 事件,这让我有些惊讶。我虽然要记住,在表单发布时不会触发事件,并且 ASP.NET 回发是作为表单发布操作实现的。

      【讨论】:

      • 如果用户按下F5 或按下browser refresh 按钮我应该在哪里禁用window.shouldconfirm = false;
      • @RajeevKumar - 抱歉回复晚了,我不知何故错过了你的评论。这个想法是在事件上设置shouldconfirm = true,而是在页面加载后立即将其设置为true(如我的答案的第一个片段)。如果您希望该事件在没有确认的情况下离开/重新加载页面,您只需在事件上将其设置为false。也就是说,如果用户关闭浏览器或按下 F5 按钮,他们被要求确认,因为shouldconfirm == true 并且在这些事件中它没有设置为false
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多