javascript - 为什么当用户离开页面时不触发回发,而是在关闭时触发?

标签 javascript asp.net

我有以下代码来检测用户导航或关闭。 回发在关闭时触发,但在导航离开时不会触发。 如果我发出警报消息,它会一直被触发。

哦,页面上有一个计时器,它在第一次勾选后实际上被禁用了。但是当使用 eventtarget 计时器导航时,总会有一个回发触发器。我想这可能是因为我已经清除了上一页的缓存。

<script src="Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(window).bind("beforeunload", function () {
        alert("u r navigating away"); // this message gets triggered at all times.
        __doPostBack('callPostBack');
    });
</script>


    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            string eventTarget = this.Request["__EVENTTARGET"];
            string eventArgument = this.Request["__EVENTARGUMENT"];

            if (eventTarget != String.Empty && eventTarget == "callPostBack")
            {
                //do task
            }

        }
    }

提前致谢。

最佳答案

这是不合逻辑的,当用户离开页面或关闭它时,你实际上不能回发,想想,用户关闭页面然后你尝试用回发重新加载它?如果您的操作有效,那么您就会陷入死循环,您会回发并保持打开用户尝试关闭的页面。无论如何,如果用户关闭页面或更改它,这是第一要务,并且回发不起作用。

如果您尝试在那里进行 ajax 调用,您也会失败,因为 ajax 在页面关闭后停止,而这将在 ajax 触发器之前完成(页面关闭)。

您需要重新设计您的操作。

关于javascript - 为什么当用户离开页面时不触发回发,而是在关闭时触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107416/

相关文章:

javascript - Aria-live 内容被 Mac 读取两次 - Chrome - VoiceOver

javascript - 即使在浏览器恢复模式下也能获得浏览器的原始宽度和高度

javascript - 将对象数组传递给 Ember.Select 时出错

asp.net - 如何阻止 .NET 使用 XML.Serialization 对 XML 字符串进行编码

javascript - 如何在 RegisterClientScriptBlock 中传递带有页面 URL 的查询字符串

javascript - 删除元素

javascript - 动画进行时在同一元素上触发 jquery animate

asp.net - IIS 8 - 默认文档 - 找不到资源

c# - 将base64转换为图像并在gridview中显示

c# - 提交简单表单 MVC ASP.Net 网站的堆栈溢出异常