【问题标题】:With the Javascript event onbeforeunload, is it possible to do anything other than an alert dialog?使用 Javascript 事件 onbeforeunload,除了警告对话框之外是否可以执行任何操作?
【发布时间】:2013-11-15 14:07:29
【问题描述】:

在我看到的所有示例代码中,onbeforeunload 的唯一功能似乎是在人员离开页面之前提供一个警告对话框。这是唯一可以由事件触发的事情,还是可以做其他事情,比如发送部分表单数据的不显眼的函数?

我正在尝试在 Yahoo! 中捕获废弃的购物车!小型企业,不幸的是我无法访问任何服务器端脚本,所以我只能在客户端工作。

我还考虑在更改电子邮件字段后进行 ajax 数据发布,然后将部分提交的所有表单列表与已完成的购物车进行比较,以确定哪些不完整。

【问题讨论】:

  • 我已经使用onbeforeunload 来触发同步 AJAX,并且成功了。但我认为它不能保证有效。并且可能会出现短暂的超时。我不会将它用于任何关键任务。

标签: javascript ajax onbeforeunload yahoo-api onunload


【解决方案1】:

您可以将部分表单数据保存在localStorage。然后,当加载另一个页面时,您可以检查该数据是否存在并将其 AJAX 发送到服务器,成功时将其从localStorage 中删除。或者您可以只在 JavaScript 中使用该数据,而不涉及服务器,但这取决于您的设置。

【讨论】:

  • 正如 Niet 所说,这是 onBeforeUnload 的一个强大用例。存储购物车数据、媒体文件中的位置等。
  • @Niet 我在jkirchartz.com 找到了一个演示,它有一个 HTML5 记事本,当发生任何更改时、几百毫秒后或页面关闭时,它会自动保存到本地存储。当用户回来显示输入的内容时,它会重新加载数据。是否可以将其修改为 AJAX 将数据发送到我们的服务器?
【解决方案2】:

<body onbeforeunload="return ('You will lose all your data')" onunload="alert('You have gone away!')"> </body>

Onbeforeunload 用于警告框。 Onunload 用于其他任何事情。

【讨论】:

    【解决方案3】:

    可以在技术上触发一个 ajax 事件,但 不保证它会在页面实际重新加载之前完成。

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多