【问题标题】:window.beforeunload prompt does not hide the ajax update progresswindow.beforeunload 提示不隐藏ajax更新进度
【发布时间】:2018-01-02 09:53:11
【问题描述】:

我用代码捕获了

$(window).on('beforeunload unload', function (element) { 
  return 'Are you sure you want to leave?';
});

在同一页面上,我有一个更新面板和一个更新进度。 如果用户通过单击按钮导航到其他页面,则会出现提示消息并且更新进度也会启动。

如果用户在警报窗口中选择否并停留在同一页面上,则更新进度仍处于可见状态。

有什么方法可以捕获用户对“更改可能未保存提示”的响应,因此我将根据结果隐藏更新进度图像。

 <asp:UpdatePanel runat="server" ID="ProductSelectorContainerPanel" UpdateMode="Conditional">
                <ContentTemplate>

 <asp:Button runat="server" ID="DoPartialPostBack" OnClick="DoPartialPostBack_Click" Text="Do Postback"/>

   </ContentTemplate>
 </asp:UpdatePanel>

.cs 代码

protected void DoPartialPostBack_Click(object sender, EventArgs e) { Response.Redirect("page2.aspx"); }

现在,如果您添加调试器,则首先调用响应重定向。它将调用 jquery 的 beforeunload 代码。并根据选择的结果(在我的情况下保持)更新进度将作为回发触发。

【问题讨论】:

  • "...更新进度也开始了" 为什么?这似乎是您需要解决的问题,而不是担心他们对提示给出什么答案。

标签: jquery ajax updatepanel updateprogress


【解决方案1】:

...所以根据结果我将隐藏更新进度图片

只需将其隐藏在 beforeunload 处理程序中即可。如果用户离开页面,是否隐藏都无所谓;他们离开了页面。如果他们不这样做,你就会得到你想要的结果。

【讨论】:

  • 当我点击提示的是按钮后,更新进度会触发。因此,如果我无法隐藏它,因为更新进度尚不可见。
  • @Anurag.Desai:我怀疑如果你尝试一下,你会发现它有效。请记住,当显示像这样的停止世界模式时,您所看到的并不总是 DOM 的最新反映。如果不是这样,您需要使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets([&lt;&gt;] 工具栏按钮;here's how to do one)可运行。
【解决方案2】:

我更改了为按钮添加完整回发触发器的代码。 因此,按钮的行为类似于普通按钮,并且当用户在警报中选择否时,按钮调用将停止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2023-04-07
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多