我有一个带有许多按钮的主页面。按下按钮时,目标页面将作为对象加载到此主页面上的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>
答案 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中设置,就像您说已经有了全局加载图像一样。