在完全加载后使用.load查看php远程文件

时间:2016-10-08 21:12:05

标签: javascript php jquery ajax load

我正在使用一个简单的代码在容器中显示php文件而不使用.load加载页面,其中包含一个显示和隐藏加载动画图像的函数

<style>
.loadingbg{width: 100%; height: 100%; position: fixed; top: 0; left: 0; background: #84ffbf; 
display: none;
}
.loadingbg img{width: 60px; height: 60px; position: absolute; left: 48%; top: 48%;}
</style>

<script>
$(document).on('click','a',function (e) {
    $(".loadingbg").css('display','block');
    e.preventDefault();
    var url = $(this).attr('href');
    $('#container').load(url+ '#content',function () {
        $(".loadingbg").css('display','none');
    });
});
</script>

<div class="loadingbg"><img src="images/page-loader.gif"></div>
<a href="contact.php">contact</a>
<a href="about.php">about</a>

<div id="container">
    <h1>index</h1>
</div>

因此,当我点击链接时,它会显示背景和小动画图像以加载其他页面而不更改网址,但它会快速获取文本内容并且loadingbg消失并开始在新网页中加载图像。我想要的是在远程php文件完全加载包括图像之前不要隐藏loadingbg。

Demo

2 个答案:

答案 0 :(得分:1)

加载内容后,您必须确保已加载所有图像。

  1. 在您的加载回调函数中,您可以使用imagesLoaded library(或任何其他验证图像加载的库)。同样在锚点击时我隐藏了#container并且当所有图像都被加载时 - 再次显示它:
  2. $(document).on('click','a',function (e) {
        $(".loadingbg").css('display','block');
        $("#container").hide();
        e.preventDefault();
        var url = $(this).attr('href');
        $('#container').load(url+ '#content',function () {
            $('#container').imagesLoaded( function() {
                // images have loaded
                $(".loadingbg").css('display','none');
                $("#container").show();
            });
    
        });
    });
    

答案 1 :(得分:0)

我必须承认,我并非100%确定这会有效......

但我会尝试这个:

$(document).on('click','a',function (e) {
    $(".loadingbg").css('display','block');
    e.preventDefault();
    var url = $(this).attr('href');
    $('#container').load(url+ '#content',function () {
        $('#container').on("load", function(){
            $(".loadingbg").css('display','none');
        });
    });
});

绑定&#34;加载&#34; #container回调中.load()的事件应该延迟&#34;延迟&#34; .loadingbg CSS更改为所有内容已完全加载的时刻。