Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么当用户导航离开页面时,回发不会触发,而是在关闭页面时触发?_Javascript_Asp.net - Fatal编程技术网

Javascript 为什么当用户导航离开页面时,回发不会触发,而是在关闭页面时触发?

Javascript 为什么当用户导航离开页面时,回发不会触发,而是在关闭页面时触发?,javascript,asp.net,Javascript,Asp.net,我有以下代码来检测用户导航或关闭。 关闭时会触发回邮,但导航离开时不会触发回邮。 如果我放置警报消息,它将一直被触发 哦,页面上有一个计时器,它在第一次勾选后实际上被禁用。但当使用eventtarget timer导航时,总会有一个回发触发器。我想这可能是因为我已经清除了上一页的缓存 <script src="Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> <script type="tex

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

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

<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
            }

        }
    }

$(窗口).bind(“beforeunload”,函数(){
警报(“u r导航离开”);//此消息始终会被触发。
__doPostBack(“callPostBack”);
});
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(iPostBack)
{
字符串eventTarget=this.Request[“_eventTarget”];
string eventArgument=this.Request[“_eventArgument”];
if(eventTarget!=String.Empty&&eventTarget==“callPostBack”)
{
//做任务
}
}
}

提前感谢。

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

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


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

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

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


你需要重新设计你的行动。

试试这篇文章,它是一个jquerysolution@Devjosh:onhashchange没有被触发。你在不同的浏览器中测试过吗?试试这篇文章,它是一个jquerysolution@Devjosh:onhashchange没有被解雇。你在不同的浏览器中测试过吗?如果我想在用户离开时停止服务器上一些正在运行的函数。在完成webservice调用之前,服务器不会响应新请求。我需要阻止这一切。谢谢您花时间发布。@Gnani这很棘手。也许一个解决方案是让一个javascript计时器用10秒的时间触发一个处理程序,如果这是停止调用处理程序,那么用户已经完成了。需要一点设计,添加一个唯一的键来知道这是启动此会话的用户。@Gnani另一种可能的方法是在发出ajax调用之前,在pageunload上向用户显示一条消息。此时,ajax调用可能有时间在用户按下对话框ok之前通知服务器。我该怎么办?如果我想在用户离开时停止服务器上一些正在运行的函数。在完成webservice调用之前,服务器不会响应新请求。我需要阻止这一切。谢谢您花时间发布。@Gnani这很棘手。也许一个解决方案是让一个javascript计时器用10秒的时间触发一个处理程序,如果这是停止调用处理程序,那么用户已经完成了。需要一点设计,添加一个唯一的键来知道这是启动此会话的用户。@Gnani另一种可能的方法是在发出ajax调用之前,在pageunload上向用户显示一条消息。此时,ajax调用可能有时间在用户按下对话框ok之前通知服务器。