为什么当用户离开页面时触发后退不被触发,但是在关闭时触发?

时间:2012-02-02 05:05:37

标签: 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
            }

        }
    }

提前致谢。

1 个答案:

答案 0 :(得分:0)

这不符合逻辑,当用户离开页面或关闭它时,你实际上无法发回帖子,想一想,用户关闭页面并尝试用帖子重新加载它?如果您的操作有效,那么您就有一个死循环,您可以回发并继续打开用户尝试关闭的页面。无论如何,如果用户关闭页面或更改它,这是第一优先级,并且回发不起作用。

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

您需要重新制定行动。