JAVASCRIPT-“;事件内部代码”;超时?o.o
JAVASCRIPT - "Code inside event" timeout? o.O
我的页面中有此事件
window.addEventListener("load", function(){
var load_screen = document.getElementById("load_screen");
document.getElementsByTagName("BODY")[0].setAttribute("class", "loaded");
})
wich在页面加载时为主体class="loaded"
添加了一个属性,但由于我添加了一种很酷的预加载效果,我希望在显示真实页面之前让事件等待3-5秒,即使它已经完全加载(但如果没有完全加载,当然还要等待更多)。这在某种程度上可能吗?
如果您希望延迟至少为5秒,您可以捕获建立事件处理程序时的时间(即,早在"加载"事件触发之前),然后在处理程序中再次检查时间。
var startTime = Date.now();
window.addEventListener("load", function(){
var load_screen = document.getElementById("load_screen");
setTimeout(function() {
document.getElementsByTagName("BODY")[0].setAttribute("class", "loaded");
}, Math.max(0, 5000 - (Date.now() - startTime)));
});
此外,没有理由使用.setAttribute()
来设置类:
document.getElementsByTagName("BODY")[0].className = "loaded";
就我个人而言,我要么使用.classList
设施,要么去老学校,增加新的班级:
document.getElementsByTagName("BODY")[0].className += " loaded";
这样就不会踩到<body>
上的任何其他类(可能在将来)。
在setTimeout函数中包装set属性,以便在设定的时间后执行。
window.addEventListener("load", function(){
var load_screen = document.getElementById("load_screen");
setTimeout(function(){document.getElementsByTagName("BODY")[0].setAttribute("class", "loaded");}, 3000);
})
使用window.setTimeout
window.addEventListener("load", function(){
window.setTimeout(
function() {
var load_screen = document.getElementById("load_screen");
document.getElementsByTagName("BODY")[0].setAttribute("class", "loaded");
},
3000);
})
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调用函数内部的函数
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 在phonegap应用程序内部重定向不起作用
- 使用此选项选择父类内部的类
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- AngularJs指令,该指令创建内部有数据对象的新指令
- 如何使用内部对象构造对象
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 用Javascript修改内部标记的CSS规则
- javascript函数内部的代码用逗号而不是分号分隔
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 光线投射从内部投射时不会碰到网格
- 使用优化器在慢速连接上加载main.js时需要js超时
- javascript无法重新定义函数内部的全局对象
- JAVASCRIPT-“;事件内部代码”;超时?o.o
- Confusing For循环内部有超时和关闭
- 如何创建一个内部带有延迟/超时的 javascript 书签
- 调用collection.find()会导致内部服务器错误并在之后超时