【发布时间】:2017-04-23 18:05:33
【问题描述】:
我有一个使用 delay() 和 setInterval() 函数的 javascript 动画。一切正常,但当用户打开另一个浏览器选项卡并返回上一个选项卡时,动画元素会变得疯狂。
作为一种解决方案,我需要在每次用户再次访问动画选项卡时重新加载页面,似乎解决方案是here。
但我看到重新加载页面仅适用于本地主机。相同的代码在远程服务器上不起作用,即重新访问页面不会重新加载页面。
代码如下:
var hidden, visibilityChange;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
function handleVisibilityChange() {
if (!document[hidden]) {location.reload();}
};
document.addEventListener(visibilityChange, handleVisibilityChange, false);
【问题讨论】:
-
可能浏览器正在缓存页面,所以重新加载没有任何作用。
-
重新加载页面只是为了处理动画问题?!您应该阅读:what-is-the-xy-problem 至少,如果此动画是使用 jQuery 处理的,则改为暂停/重新启用它,但不要重新加载页面
-
@Barmar,缓存与否,如果页面重新加载,动画应该从头开始。
-
你可以试试window.location.reload(true);
-
@A.Wolff,我的问题不是关于动画问题,而是关于 location.reload() 问题。动画只是重新加载的一个原因。
标签: javascript jquery reload