【问题标题】:Is it possible to load an external page with images in a div using load (), and show the page only when the images are loaded?是否可以使用 load() 在 div 中加载带有图像的外部页面,并仅在加载图像时显示页面?
【发布时间】:2014-06-04 13:41:04
【问题描述】:

我有两个页面:

index.php 和 external.php

在索引中,我有函数:

$('#buttom').click (function (e) {
    e.preventDefault (); 
    //click action 

    $('#ext-container').load('external.php');

});

没关系,工作正常。但我想在页面完全加载之前隐藏它。

我在外部页面上试过这个:

**css**

#wrapper{
    display:none;
}


$(window).load(function() {

    $('#wrapper').fadeIn(2000);

});

但它仅在我在正常浏览中打开页面时才有效,使用 load(external.php) 页面会分阶段加载。

有什么想法吗?

[更新]

伙计们,使用 TrueBlueAussie 的尖端,插件 waitForImages,就像一个魅力。

解决办法如下:

  • 页面索引还是一样,正常加载即可。

    $('#buttom').click (function (e) { e.preventDefault(); //点击动作

    $('#ext-container').load('external.php');
    

    });

  • 现在在 external.php 中

    脚本类型='text/javascript' src='jquery.waitforimages.min.js'

重要的 CSS:

#wrapper{
  display:none;
}

$(document).ready(function(){

    $('.wrapper').waitForImages(function() {

        $(this).fadeIn(2000);
   });

});

Ty all,肯定会帮助许多订单。对不起我的英语不好!

【问题讨论】:

    标签: jquery html image load external


    【解决方案1】:

    隐藏/显示装载容器怎么样?

    $('#buttom').click (function (e) {
        e.preventDefault (); 
        //click action 
        $('#ext-container').css({display: 'none'});
        $('#ext-container').load('external.php', function(){
            $('#ext-container').show();
        });
    
    });
    

    简化为:

    $('#buttom').click (function (e) {
        e.preventDefault (); 
        var $container = $('#ext-container')
        //click action 
        $container.css({display: 'none'}).load('external.php', function(){
            $container.show();
        });
    
    });
    

    基本上load 可以采用complete 函数http://api.jquery.com/load/ 在加载完成后可以做任何你想做的事情(不是图像,只是页面)。

    更新

    试试https://github.com/alexanderdickson/waitForImages

    $('#buttom').click (function (e) {
        e.preventDefault (); 
        var $container = $('#ext-container')
        //click action 
        $container.css({display: 'none'}).load('external.php', function(){
            $container.waitForImages(function(){$container.show();});
        });
    
    });
    

    【讨论】:

    • 是的,已经想到了那个解决方案,但是就像你说的那样,它不适用于外部内部的图像。页面已加载,但图像仍在加载。
    • 您可以为加载部分的所有图像添加onload 事件吗?如果该部分被隐藏,图像是否会加载?
    • 您可以尝试一种旧的预加载图像技术:在每个加载的图像 URL 上调用 ajax。等待所有的 Ajax 承诺全部完成,然后您可以保证浏览器在显示 div 时缓存了图像。
    • 请参阅this question,了解在图像加载时正确触发事件的技术。
    • @Mike Oliveira:Blazemonger 的链接正如我在评论中建议的那样。我还添加了一个插件示例,我发现它可以做同样的事情,但封装起来更容易使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多