Symfony 3.2-加载状态,直到页面满载为止



大家好,

我陷入了一些JavaScript/Symfony问题。我有一个页面需要超过10秒的加载(其中有很多表格)。

问题是,当页面显示时,只有 html 才能起作用,并且当用户开始使用表单时,它不起作用(导致其堆栈Ajax请求并返回任何内容)。

在这里,AJAX的示例集为此页面

因此,我通过为每个提交设置一个加载状态来处理它的一部分。(我使用了Gasparesganga加载库)。

$(document).ajaxStart(function(){
        $.LoadingOverlay("show");
    });
    $(document).ajaxStop(function(){
        $.LoadingOverlay("hide");
    });

页面满载时,一切都很好。

但是问题在页面上的降落与其完全加载的时间之间存在。当用户进入页面时,我尝试显示旋转器:

$.LoadingOverlay("show");
window.onload = function() {
        console.log('window loaded');
        $.LoadingOverlay("hide");
    };    

尝试在我的代码开头替换:

<script>
    $("body").LoadingOverlay("show");
</script>

,但这一切都没有作用;因此,当我降落在页面上时,我首先看到HTML 8秒钟,然后显示旋转器。

因此,我的问题涉及一个事实,即Symfony在此中发挥作用:控制器进行计算,并且它显示出视图,直到获得完整的信息为止 - 下一个加载JS。如果有人可以给我一些提示,那就太好了!

感谢您的阅读和您的帮助。

youyou

实际上我只是找到了如何获得它。如果控制器花费太多时间来响应:您可以将加载屏幕(ONCLICK())放在进入重页的每个链接上。无需使用.hide()隐藏它,它会反正重定向...在重的页面中,您将脚本放在标题上,然后在之前制作的相同的加载屏幕>:

document.write('<div class = "loader centered" style="...">');

降落在页面上后,这将立即启动加载屏幕。因此,当页面满载时,您可以在视图代码底部删除加载状态:

$(function() { //equals window.onload or ready
$('.loader').hide();
// ... retrieve opacity, pointer-events etc...

现在,由于php无法躲避它-Go Full njs--),但它使您可以更多地控制用户操作。

我认为您需要一个不取决于jQuery库的加载程序,因此没有出现加载程序,因为jQuery尚未加载。也许您需要搜索JS完整加载程序。祝你好运!

最新更新