【问题标题】:ASP.NET Page_Unload to stop user from leaving page [duplicate]ASP.NET Page_Unload 阻止用户离开页面[重复]
【发布时间】:2010-11-23 17:49:42
【问题描述】:

可能重复:
Best way to detect when user leaves a web page

我试图让用户在尝试离开当前页面时选择留在当前页面上(如果他们没有保存对进度的更改)。我不确定如何解决这个问题,因为我尝试过 JavaScript 并失败了。

我希望在 ASP.NET C# 代码中的 Page_Unload 函数中有一种方法。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    请参阅此帖子"Best way to detect when a user leaves a page"。这应该可以帮助你。您必须在客户端执行此操作,就好像他们离开一样,服务器永远不知道。

    【讨论】:

    • 太搞笑了。您获得了一个答案,该答案链接到提供与我给出的相同答案和链接的问题。既然我看到另一个问题,投票结束作为重复。
    【解决方案2】:

    您不能依赖服务器端代码来执行此操作。当请求到达服务器时,为时已晚。您需要通过为 beforeunload 事件提供事件处理程序来使用 javascript 执行此操作。请参阅此demo,了解如何操作的简单想法。

    【讨论】:

      【解决方案3】:

      我建议使用 JavaScript。例如,在 SO 上,如果您在进行一些更改后尝试退出页面,系统会提示您。

      【讨论】:

        【解决方案4】:

        您可能希望考虑将 javascript 函数添加到 Body OnUnload event

        【讨论】:

        • 我的记忆很模糊,但我认为卸载在每个浏览器上都不会很快触发。如果您可以发布一个显示其他内容的链接,我会很乐意删除此评论,但我认为您想查看 beforeunload。
        • @tvanfosson:是的,你是对的,用户可能正在寻找 beforeonunload
        【解决方案5】:

        我相信上面的 tvanfosson 显示了最好的方法。你可以注入这个 javascript 服务器端来提供消息、重定向等。

        【讨论】:

          【解决方案6】:

          这是必备的:Asp.NET page life cycle。 始终牢记只有所有服务器端工作完成后,页面才会发送到客户端。

          【讨论】:

          • 页面生命周期与在浏览器中离开页面之前获得提示有什么关系?
          • ErnieStings 发布问题的方式表明他/她需要了解页面生命周期。我的意思是,发现如何做事是一件好事,而且如果你也明白你为什么这样做会更好。没有人发布任何关于 ErnieStings 正在寻找一种方法在服务器端完成这项工作的事实,所以我做到了。
          • 这个问题与生命周期无关。即使您完全了解页面生命周期,也根本无法执行此服务器端(我在回答中确实注意到了这一点)。问题是您必须阻止必须在客户端完成的卸载页面的事件的完成。
          猜你喜欢
          • 2013-05-04
          • 1970-01-01
          • 2013-02-21
          • 1970-01-01
          • 2017-01-17
          • 2014-05-01
          • 2012-05-03
          • 1970-01-01
          • 2014-10-15
          相关资源
          最近更新 更多