我试图在一个人离开页面之前添加1000毫秒的延迟。我正在使用beforeunload事件来启动jquery动画,并希望它在页面离开之前完成。
我不关心旧浏览器,IE9,最新的safari,chrome和FF4都是我感兴趣的。
编辑:我希望在浏览内部网页时实现它。当然,我可以将所有内部链接调用为javascript,但我更倾向于使用不那么强力的方法。
另外,我不是要阻止人们离开页面,甚至不让他们等待很长时间,1秒钟才能淡出?当我选择退出时,这并不比我播放的每一个游戏都要糟糕。
现在我问过如何阻止一个人离开一个页面,然后是的,所有“不要这样做”都应该得到。
答案 0 :(得分:6)
首先,如果人们想要离开你的页面,不要给它留下任何障碍或困难。只是让他们。
Konerak说得好......
当用户即将离开页面而丢失数据时,可以使用阻止操作,但将其用于动画和噱头会很快惹恼用户。
其次,您只能阻止使用阻止操作自动关闭,例如alert()
或prompt()
,这会暂时阻止浏览器的视口,等待用户响应。
答案 1 :(得分:1)
好吧,我希望在浏览内部页面时实现它。
我知道现在已经四年了,但我想指出,在你所描述的范围内,你可以这样做。
$(document).on("click", "a", function (e) {// Listen for all link click events on the page (assuming other scripts don’t stop them from bubbling all the way up)
// Stop the link from being followed.
e.preventDefault();
// Grab the link element that was clicked
var linkClicked = e.target;
// I'm using setTimeout to just delay things here, but you would do your animation and then call a function like this when it’s done
window.setTimeout(function () {
// Simulate navigation
window.location = linkClicked.href;
}, 1000);
return false;
});
这仍然是不可取的:
答案 2 :(得分:0)
8年后,我将为自己的网站编写代码,特别是页面之间的淡入淡出。但是,我只会在网站中的页面之间进行导航,而不会使用window.onbeforeunload
或window.onclick
。我将click事件处理程序附加到每个页面上的特定“按钮”上。 pointer-events
甚至被其他元素禁用,因此事件的元素范围非常有限。该代码是switch()
语句,其中每个“按钮”都有大小写。每个按钮都导航到网站中的特定页面。
我认为这不是不良的网页或网站行为。在页面之间进行转换时1秒钟的延迟不会使用户烦恼。我认为,如果您包括加载目标页面所花费的时间,那么您也许可以从中获得2秒钟或更长时间,它也可以在加载数据时逐渐消失。
视觉上优雅,尤其是与具有灵活布局的典型新闻/信息网站相比,这些网站在加载时会在页面上移动。这些页面要花2秒钟或更多的时间才能转移内容,然后您才能阅读任何内容。
我的网站已经充满了CSS和SVG动画,因此,将其添加到内部页面导航中对于该项目而言是不费吹灰之力的。如果限制用户事件的元素范围并减小延迟,则IMO是好的行为,不是不好的行为。视觉优雅具有价值。
编辑-进入本文时,我发现对于一组相似的页面,我可以通过将它们合并为一页来实现更好的交叉淡入淡出。这样,我可以真正在每个子页面之间进行淡入淡出,而不是先淡出一个页面然后再淡入另一个页面。