2013-03-14 32 views
1

我目前有一个网站,它使用类似购物车的系统暂时进行查询。我目前使用Javascript onunload功能来阻止用户离开页面,并将他/她的查询放在购物车中。仅当浏览器关闭时才显示onunload

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

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

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

谢谢

+1

临时查询存储在哪里?他们如何被传递到下一页?如果您将它们存储在[会话存储](https://developer.mozilla.org/en-US/docs/DOM/Storage#sessionStorage)中,则它们将在整个会话中可用,并且在浏览器/选项卡为时会自动消失关闭。那么不需要使用'onunload'。 – 2013-03-14 09:11:56

+0

它们存储在一个会话中,每个页面都有一个类似购物车的div,它只是加载和格式化会话。该网站不会打开新窗口或标签。 – Alex 2013-03-14 09:16:20

+0

当你在一个会话中说,我从你的评论中假设你的意思是一个PHP会话?这将有助于更具体,因为您没有在问题中提到PHP,也没有用PHP标记它。 – 2013-03-14 09:19:39

回答

2

也许你可以使用一个全局变量来告诉您是否离开页面的下一个步入购物车。

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

+0

精彩评论,我应该想到这个!我想知道是否添加一个新的变量到PHP来捕捉网址会减慢它,这可能会隐藏或显示JavaScript?如果这是有道理的。 – Alex 2013-03-14 09:11:21

+0

如果你封装了变量和所有在同一[自调用函数]中使用它的处理程序,它不需要是全局的(http://stackoverflow.com/a/3597102/778975 )。除非需要,否则最好不要在JS中公开全局变量,特别是如果您将使用由您网页上其他人编写的JS(JS库,社交小部件等)。 – 2013-03-14 09:38:40

相关问题