表单提交上的 Safari 动画
Safari animation on form submit
我有一个带有表单的页面,在提交后加载时间很长。这就是为什么我决定将微调器放在按钮上的原因。
相反,如果我有 div 提交按钮,则:
$submit_btn.click(function(e){
if ($submit_btn.attr("data-send") == "yes"){
e.preventDefault();
}
else {
$('#reg').html('<div id="spin_reg" class="spinner-icon"></div>');
$new_try_now.submit();
}
});
在 div 微调器中我有 CSS3 动画。
问题是动画在 Chrome 中运行良好,但在 Safari 中无法启动。
我认为问题是 Safari 杀死了页面上的所有进程。
如果没有 AJAX 我如何避免它?
编辑:
动画:
@-webkit-keyframes nprogress-spinner {
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
}
@-moz-keyframes nprogress-spinner {
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
}
@-o-keyframes nprogress-spinner {
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
}
@-ms-keyframes nprogress-spinner {
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
}
@keyframes nprogress-spinner {
0% { transform: rotate(0deg); transform: rotate(0deg); }
100% { transform: rotate(360deg); transform: rotate(360deg); }
}
.spinner-icon {
display: block;
width: 16px;
height: 16px;
border: solid 2px transparent;
border-top-color: #158FD2;
border-left-color: #158FD2;
border-radius: 100%;
-webkit-animation: nprogress-spinner 900ms linear infinite;
-moz-animation: nprogress-spinner 900ms linear infinite;
-ms-animation: nprogress-spinner 900ms linear infinite;
-o-animation: nprogress-spinner 900ms linear infinite;
animation: nprogress-spinner 900ms linear infinite;
}
回答这个问题有点晚了,但仍可能对某些人有所帮助。 :)
Safari 在提交后停止 运行 scripts/gifs 等。您需要在微调器显示后提交表单。
$('#spinner').show(function() {
$('#form').submit();
});
在我的例子中 #spinner
已经用 style='display:none'
渲染了。
如果你不想在你需要它之前渲染它,你可以在你的#spin_reg
CSS中添加display:none
,然后这样写JS:
$('#reg')
.html('<div id="spin_reg" class="spinner-icon"></div>')
.show(function() { $new_try_now.submit(); });
我有一个带有表单的页面,在提交后加载时间很长。这就是为什么我决定将微调器放在按钮上的原因。
相反,如果我有 div 提交按钮,则:
$submit_btn.click(function(e){
if ($submit_btn.attr("data-send") == "yes"){
e.preventDefault();
}
else {
$('#reg').html('<div id="spin_reg" class="spinner-icon"></div>');
$new_try_now.submit();
}
});
在 div 微调器中我有 CSS3 动画。
问题是动画在 Chrome 中运行良好,但在 Safari 中无法启动。 我认为问题是 Safari 杀死了页面上的所有进程。
如果没有 AJAX 我如何避免它?
编辑:
动画:
@-webkit-keyframes nprogress-spinner {
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
}
@-moz-keyframes nprogress-spinner {
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
}
@-o-keyframes nprogress-spinner {
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
}
@-ms-keyframes nprogress-spinner {
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
}
@keyframes nprogress-spinner {
0% { transform: rotate(0deg); transform: rotate(0deg); }
100% { transform: rotate(360deg); transform: rotate(360deg); }
}
.spinner-icon {
display: block;
width: 16px;
height: 16px;
border: solid 2px transparent;
border-top-color: #158FD2;
border-left-color: #158FD2;
border-radius: 100%;
-webkit-animation: nprogress-spinner 900ms linear infinite;
-moz-animation: nprogress-spinner 900ms linear infinite;
-ms-animation: nprogress-spinner 900ms linear infinite;
-o-animation: nprogress-spinner 900ms linear infinite;
animation: nprogress-spinner 900ms linear infinite;
}
回答这个问题有点晚了,但仍可能对某些人有所帮助。 :)
Safari 在提交后停止 运行 scripts/gifs 等。您需要在微调器显示后提交表单。
$('#spinner').show(function() {
$('#form').submit();
});
在我的例子中 #spinner
已经用 style='display:none'
渲染了。
如果你不想在你需要它之前渲染它,你可以在你的#spin_reg
CSS中添加display:none
,然后这样写JS:
$('#reg')
.html('<div id="spin_reg" class="spinner-icon"></div>')
.show(function() { $new_try_now.submit(); });