jQuery onLoad 事件在加载任何内容之前触发
jQuery onLoad event fires before anything loads
我知道有类似的问题,但答案对我不起作用(下面的示例(。首先,我的(简化(代码。
.HTML:
<div id="loading_screen">
<img src="<?= base_url()?>images/loading_screen.png" title="The game is loading, please wait.."/>
</div>
<div id="container">
<!-- a whole lot of HTML content here -->
</div>
.CSS:
#container{
display:none;
}
.JS:
$(document).ready(function(){
//when document loads, hide loading screen and show game
$('#loading_screen').hide();
$('#container').show();
})
这个想法很简单:我最初显示加载屏幕并隐藏container
;一旦所有内容都加载完毕,我隐藏加载屏幕并显示容器。
但是,它不起作用。一旦div 开始加载container
,JS 代码就会立即触发显示。
loading_screen
div 只有 1 个小图像 (20KB(,container
div 总共约为 400KB。
容器div 中有图像,其某些子元素上有背景图像。因此,根据此问题的答案,我将代码更改为$(window).load(function()
。但是,这并没有解决问题。
我想我可以执行以下操作 - 一开始甚至不创建容器div,只有在加载div 后才创建它及其所有内容。但是,我宁愿不走这条路,容器中有服务器端代码,我必须添加包含等,这不值得。我很高兴依靠 20KB 图像将在 400KB 内容之前加载的事实,我只需要让代码在加载这 400KB 之前不会触发。
编辑:
我将这段代码添加到JS(在onload函数之外(中,以查看页面加载时发生了什么:
setInterval(function(){
var st1 = $('#loading_screen').css("display");
var st2 = $('#container').css("display");
console.log(st1+" "+st2);
},100);
它不断输出none block
,这意味着loading_screen立即隐藏,容器立即可见。
您应该看看这个问题的答案: 检测页面是否已完成加载
.load()
api 的 jquery 页面解释了以下内容:
与图像一起使用时加载事件的注意事项
开发人员尝试使用 .load(( 快捷方式解决的一个常见挑战是在图像(或图像集合(完全加载时执行函数。有几个已知的警告应该注意。这些是:
- 它不能始终如一地工作,也不能可靠地跨浏览器
工作- 如果图像 src 设置为与以前相同的 src,则在 WebKit 中无法正确触发
- 它没有正确地冒泡 DOM 树
- 可以停止为浏览器缓存中已存在的图像触发
它以此示例结束:示例:在页面完全加载(包括图形(时运行函数。http://api.jquery.com/load-event/
$(windows).on("load", function() { /// this is deprecated --> $( window ).load(function() {
// Run a function when the page is fully loaded including graphics.
});
"ready"事件在构建 DOM 时触发,但在加载图像等其他内容之前触发。如果你想要一个真正的"加载"处理程序,那么这样做:
$(window).load(function(){
//when document loads, hide loading screen and show game
$('#loading_screen').hide();
$('#container').show();
})
- jQuery中是否内置了任何字符串格式化函数
- 任何一种简单的方法都可以将带有onload的元素作为目标
- 如何调用表td标记内的Onload函数
- 有人知道有没有jquery插件可以在图像上写文本,并让用户将其放置在图像内的任何位置
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- AngularJS-检测到n分钟内没有任何操作并进入默认状态
- 使用多功能框在 chrome 扩展程序中包含内联自动填充功能的任何方法
- Javascript函数img.onload不返回任何内容(真或假)
- 创建按钮不调用表单内的任何操作
- 在过去24小时内,谷歌应用程序脚本或可视化API的任何变化
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- 找不到“”;应用程序“;模板或视图.对象{fullName:“template:application”}将不呈现任何内
- 如何在没有任何内置函数的情况下将元素添加到数组中
- 如何获得元素id点击没有任何内联函数调用在javascript
- 在javascript/jquery中是否有任何内置功能来过滤邮件,如php's函数(!使用filter_var
- 在JavaScript中过滤数组,而不使用任何内置函数或新数组
- Jquery是否有任何内置方法来单独查找可验证的元素?
- 我试图在不使用任何内置方法的情况下延迟此函数.为什么这行不通呢?
- 如何在不使用javascript中任何内置函数的情况下反转字符串
- Angular Bootstrap-ui 是否有任何内置函数来处理打开或关闭的东西