1

当用户离开页面时,我想使用 jquery slideUp 效果,只是为了让页面在关闭时看起来很酷。

我假设我应该使用 onunload 事件,但是我怎样才能延迟页面关闭足够长的时间以使效果运行完成。

想到的选项之一是有效地劫持页面关闭函数,将其存储在某个变量中,然后在运行效果后执行它,但我不知道该怎么做。

任何建议或替代想法都非常受欢迎

4

7 回答 7

4

您正在寻找的是 onbeforeunload 事件。
不过只是一个警告......它应该非常快......或者无论它看起来多么酷,您的访问者都可能会讨厌它

至于防止页面在动画完成之前导航离开,这是一个更大的问题......任何动画都将依赖于 setTimeout/setInterval 并且页面不会等待那些完成后再离开。

于 2009-06-17T12:30:27.017 回答
3

在用户要求时关闭窗口之外的任何操作都违反了与用户的合同。浏览器窗口不是你的,是用户的,效果再酷,难免会惹恼你的大部分用户。

onbeforeunload 事件的功能非常有限。它必须返回一个字符串,然后用于提示用户确认离开页面。它不适用于很酷的动画。

于 2009-06-17T12:34:09.710 回答
2

据我所知,阻止用户离开页面的唯一方法是 onbeforeunload 事件,该事件不可取消。相反,您从该方法返回一个字符串,浏览器通过是/否对话框提示用户,生活继续。276660 对此有更多信息。

我不认为你会在这个方面有很多运气。

于 2009-06-17T12:34:38.773 回答
1

为什么不呢,而不是在用户简单地想要离开您的网站时产生“酷”效果(即使用户关闭浏览器/选项卡也会触发卸载事件)并以此来烦扰简单用户......防止他/她又回来了……

...当用户第一次访问您的网站时,会产生那种“酷”的效果吗?作为一个正常的介绍效果?

我这样做是一个简单的想法,你可以在这里看到它:http ://www.balexandre.com/jmfc

于 2009-06-17T12:32:52.927 回答
1

我会 100% 同意Jonathan Fingland 的回答,并添加此内容。

在 IE 中,(我不确定哪些版本支持此功能,我知道 IE6 支持)您可以在离开页面时使用一些适当的元标记来实现淡入淡出等。但是,这在浏览器中是有限的(仅限 IE),因此您无法跨浏览器使用。

于 2009-06-17T12:34:00.223 回答
1

您可能会发现通过 AJAX 加载新内容可以让您更好地控制效果和过渡,并减少因尝试以这种方式劫持浏览器操作而给用户带来的烦恼。

我会考虑使用上面提到的滑块形式(例如参见http://webdesignledger.com/tutorials/13-super-useful-jquery-content-slider-scripts-and-tutorials),或者只是加载内容窗格响应用户点击。

于 2010-05-17T00:03:50.857 回答
0

我发现延迟关闭窗口的唯一方法是使用警报。如果这对您的情况来说是一个可以接受的折衷方案,它确实会延迟内存中的窗口破坏,并允许您的页面计时器执行(当然,如果用户没有在您的动画完成之前关闭警报弹出窗口)。

我最近使用了这种方法,所以我可以通过 FABridge 调用一个 flex 方法(否则它会在 flex 方法调用完成之前被销毁)。我想听听你对此的评论。

于 2010-04-08T10:34:01.843 回答