ondemand javascript调用窗口卸载使用jquery

时间:2010-04-12 12:17:24

标签: jquery ajax

我在下面的代码中尝试过“卸载”和“beforeunload”绑定,但是没有一个浏览器在发送请求:

$(window).bind('unload', function(){
       $.ajax({cache: false,
        dataType: "script",
            url: "test.php"
        });
    });

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

浏览器不会等待此代码完成...它运行正常:)添加alert('hi')以查看它是否正在运行。

您遇到的问题是unload问题的典型问题,浏览器会在您的案例中发出请求之前很好地导航...而且它应该真的,没有您运行的代码应该必须在我被允许进入下一页之前完成。这就是unload的行为方式。您可以将呼叫设置为同步以将用户保留在那里,但请不要执行此操作。

在窗口上创建unload事件主要是为了清理你需要的DOM中的任何东西,更多 - 所以当垃圾收集不像现在那样好时(并且仍然没有) IE)...它并没有真正考虑到AJAX或度量标准跟踪。

答案 1 :(得分:1)

只需将选项async设置为false。

$(window).bind('unload', function(){
   $.ajax({
    cache: false,
    async: false,
    dataType: "script",
        url: "test.php"
    });
});