表单上的Safari动画提交

问题描述 投票:4回答:1

我有页面的表单,提交后加载很长时间。这就是我决定将微调器放在按钮上的原因。

相反,如果提交按钮我有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;
}
javascript jquery css3 safari css-animations
1个回答
7
投票

回答这个问题有点晚了,但可能仍然对某人有所帮助。 :)

Safari在提交后停止运行脚本/ GIF等。您需要在显示微调器后提交表单。

$('#spinner').show(function() {
     $('#form').submit();
});

在我的情况下,#spinner已经用style='display:none'呈现。如果您不想在需要之前渲染它,可以将display:none添加到#spin_reg CSS中,然后像这样编写JS:

$('#reg')
    .html('<div id="spin_reg" class="spinner-icon"></div>')
    .show(function() { $new_try_now.submit(); });
© www.soinside.com 2019 - 2024. All rights reserved.