在html对象

时间:2016-08-30 21:38:22

标签: javascript html

我有一个带有许多按钮的主页面。按下按钮时,目标页面将作为对象加载到此主页面上的div中,其中目标是要在对象中显示的页面。

<script>
    .... check which button is pressed and assign path to target 
    var objectContent = "<object type=\"text/html\" data=\"" + target + "\" height=\"500px\" width=\"100%\" style=\"overflow:auto; min-height:400px;\"></object>";
    document.getElementById('content').innerHTML = objectContent;
</script>

HTML

<div id='content'>
</div>

所有作品和目标页面在主页面div中正常加载。

有时加载内容可能需要一段时间,因此我会使用加载gif。我一直在整页上使用一个,但我想在div中的内容上只使用一个。

在目标页面中,我有以下内容来显示加载器:

<script>
    $(".loader").fadeIn("fast");
</script>

这是为了在页面加载后隐藏它

<script>
    $(document).ready(function(){
        $(".loader").hide();
    });
</script>

这不起作用。该页面加载正常,但没有加载GIF。没有错误。

如果我在浏览器中调试,我会看到gif,因为它必须加载和隐藏,但不是在我正常加载页面时。我怀疑它加载太晚或太快隐藏。

一旦页面开始加载,我的javascript是否会显示加载程序?我把它放在身体的开头。

或者我正在做什么来在页面完全加载之前隐藏它?无论哪种方式,谁能看到我做错了什么?

更新和答案

将onload添加到object标记,如下所示:

var out = "<object ... onload=\"contentLoaded(this)\"></object>";

<script>
    function contentLoaded() {
        $(".loader").hide();
    };
</script>

2 个答案:

答案 0 :(得分:1)

那么为什么不将.loader元素留空并做类似的事情

$('.loader').fadeIn('fast').html('<img src="loading.gif" />');

这个

$('.loader').hide().html('');

答案 1 :(得分:0)

加载gif的触发器是否仅显示在已加载的页面中?

如果是这样,当浏览器收到显示加载程序的指令时,它已经获取了数据。

我想大部分时间都花在等待内容上,所以在此之前尝试显示加载程序:

(function(app) {
  document.addEventListener('DOMContentLoaded', function() {
    ng.platformBrowserDynamic
      .platformBrowserDynamic()
      .bootstrapModule(app.AppModule);
  });
})(window.app || (window.app = {}));

您可以随时创建一个本地化的加载器图像,在innerHTML中设置,就像您说已经有了全局加载图像一样。