【发布时间】:2015-04-29 05:55:55
【问题描述】:
我有一个在点击链接时触发的动画。这是一个放大 div 然后淡出的 jQuery 动画。为了确保速度,在点击链接的同时,重定向被触发。这必须发生,我不能将重定向放在 jQuery 的 animate() 的成功函数中。此重定向是通过表单提交完成的。在 Chrome、Firefox 和 IE 上,它按预期工作,动画播放,如果页面在动画完成之前完全加载,它会重定向但动画会播放。
在 Safari 上(主要在 iPad 上测试),一旦单击链接,页面似乎“冻结”并且动画无法执行。页面加载时屏幕上还有 GIF,如果我在这些 GIF 出现在屏幕上并制作动画时单击链接,它们也会暂停。我看过一篇帖子说要设置超时,应用样式,然后提交,但问题是虽然 HTML 会应用那个 CSS 样式,但它仍然会冻结屏幕,而且他们不处理动画,只是静态 CSS 样式.
这里是一些示例代码,展示了我是如何实现这一点的方法(它没有经过测试,只是为了说明我的观点,因此可能存在遗漏部分或语法错误):
var someData = 'foo'; //This value is irrelevant, just there for syntactical consistency.
$("#link").on("click", function() {
var form = $("<form method='POST'></form>");
form.attr("action", "http://someurl.com");
var input = $("<input type='hidden'/>");
input.val(someData);
form.append(input);
$(document.body).append(form);
form.submit();
//Form has been submitted, now run a short animation for the remaining life of the current page
$(this).animate({width: "100px", height: "100px", opacity: "0"}, 150);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="link" style="width: 100px; height: 100px; background-color: #FFF">Click Me</div>
基本上,我需要确保一旦 Safari 浏览器开始加载新页面/链接,它不会停止更新当前页面。从我所看到的情况来看,这听起来像是 Safari 中的一个问题,但正如我所见,这个问题在网络上也不是很常见。有帖子处理 GIF 动画,但这是 CSS 样式的动画。
感谢您的帮助!
【问题讨论】:
-
我在 safari 遇到类似的情况,你解决了吗?
-
作为参考,我在寻找解决方案时发现了以下 web-kit 错误:bugs.webkit.org/show_bug.cgi?id=16177
-
很抱歉耽误了任何人关注此事 - 我还没有找到解决方案。马特,非常感谢张贴。当我最初研究这个但无法再次打开它时,我发现了这一点。
标签: javascript jquery css animation safari