【问题标题】:Check a web form is closed / refreshed in javascript检查 web 表单是否在 javascript 中关闭/刷新
【发布时间】:2013-06-17 02:11:01
【问题描述】:

当页面/浏览器像这样关闭时,我有一个 javascript 函数:

  window.onbeforeunload = function (e) {

    var y = window.event.clientY;// e.pageY || e.clientY;

    if (y < 0) {

        alert('Window closed');

    }
    else {
        alert('Window refreshed');

    }

该功能在 IE 中运行良好,但在其他浏览器中无法运行。我只想在网页的浏览器/选项卡关闭时触发此功能。不在页面刷新/重新加载中。

请帮忙。

【问题讨论】:

  • 你必须返回字符串,而不是使用 alert(): return 'Window closed';
  • 我需要知道是表单关闭还是刷新。如何在所有浏览器中检查?

标签: c# javascript jquery asp.net asp.net-mvc


【解决方案1】:

该功能在 IE 中运行良好,但在其他浏览器中无法运行。

这很正常。其他浏览器根本不允许您在此功能中发出警报。

在 Chrome 中检查一下:

抱歉,您应该忘记在 onbeforeunload 处理程序中发出警报。你应该在这个处理程序中做的唯一一件事就是返回一个字符串结果:

window.onbeforeunload = function (e) {
    var y = window.event.clientY;// e.pageY || e.clientY;
    if (y < 0) {
        return 'Window closed';
    }
    else {
        return 'Window refreshed';
    }
};

决定如何向用户显示这些信息是浏览器的责任,而不是你告诉它明确提醒。

【讨论】:

  • 实际上我想在关闭表单/浏览器时执行 ajax 调用。它应该在这种情况下工作吗?
  • 不能保证。如果用户很快单击关闭按钮,浏览器将简单地从页面重定向,停止所有 javascript 执行,如果您的 AJAX 请求没有到达服务器,那么它可能永远不会成功。我不会依赖这种行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多