【问题标题】:Javascript show onunload only when browser is closedJavascript仅在浏览器关闭时显示onunload
【发布时间】:2013-03-14 08:46:46
【问题描述】:

我目前有一个网站,它使用类似购物车的系统来临时保存查询。我目前使用 Javascript onunload 函数来阻止用户离开页面并在购物车中丢失他/她的查询。

我唯一的问题是购物车跨越多个页面,这很好,因为它是基于会话的,但是每当我尝试更改页面时,onunload 甚至会弹出并且可能非常烦人。

是否可以将 onunload 事件设置为浏览器上的关闭按钮,以便仅在他们尝试关闭它时显示?

我希望我们能找到一些东西,因为重新设计网站并不是一个真正的选择,

谢谢

【问题讨论】:

  • 临时查询存储在哪里?它们是如何传递到下一页的?如果您将它们存储在session storage 中,它们将在整个会话期间可用,并且会在浏览器/选项卡关闭时自动消失。那就不用onunload了。
  • 它们存储在一个会话中,每个页面都有一个类似购物车的 div,它只是加载和格式化会话。该网站不会打开新窗口或标签。
  • 当您在会话中说时,我从您下面的评论中假设您是指 PHP 会话?这将有助于更具体,因为您没有在问题中提到 PHP,也没有用 PHP 标记它。
  • 啊,是的。一个 PHP 会话,很抱歉我没想到,因为它最初与 PHP 无关。项目在会话中放入数组中。

标签: javascript browser cart onunload


【解决方案1】:

也许您可以使用全局变量来判断您是否要离开页面以进入购物车的下一步。

例如,在每个购物车页面中的“下一步”按钮的onclickonsubmit 事件中,您可以设置一个全局变量,指示您应该让用户离开该页面。然后在onunload 事件中检查是否设置了这个全局变量,如果没有设置则只显示警告。

【讨论】:

  • 精彩的评论,我应该想到这个!我想知道是否在 php 中添加一个新变量来捕获 url 会减慢它的速度,这可能会隐藏或显示 javascript?如果这有意义..
  • 如果您将变量和所有使用它的处理程序封装在同一个self invoking function 中,则它不需要是全局的。除非您需要,否则最好不要在 JS 中公开全局变量,尤其是如果您将在您的页面上使用其他人编写的 JS(JS 库、社交小部件等)。
猜你喜欢
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多