如何解决jQuery,如果页面已加载并经过时间
heyo,
我只想要一个简单的if语句,用于检查整个页面是否已加载window.loaded
以及是否已经经过time.passed
的Sertan时间。我不想在加载窗口时启动time.passed计数器...我只想要一个if语句来检查窗口&& time是否为真。
有可能吗?
这是我不正确的梦代码
if (window.loaded == true && time.passed == 3000) {
// do something
}
我想我必须使用变量,对此我很好...我只是不知道如何使它对我有用。
解决方法
var isLoadedAndTimePassed = false;
function run() {
isLoadedAndTimePassed = true;
console.log('loaded and time passed');
}
var time = (new Date()).getMilliseconds(),wait = 3000;
window.addEventListener('load',function load() {
window.removeEventListener('load',load);
time = (new Date()).getMilliseconds() - time;
if (time < wait) {
window.setTimeout(run,wait - time);
} else {
run();
}
});
,
由于@NoSkill,我自己弄出了答案。甚至tought他的脚本都没有按我预期的那样工作,并在jQuery中重写了它。现在它可以按我的意愿工作了。
我在顶部添加了一个小计数器,以查看脚本是否按预期工作。我还添加了一个较大的图像,以使站点加载时间更长,但是由于某些原因,在此代码片段工具中,图像至少立即对我加载。
这是代码:
// counter to check if the script works as intended
var startTime = new Date();
setInterval(function () {
$('span').html("ms since the start: " + (new Date() - startTime));
},100);
// the actual script
function run() {
$('p').html('site loaded and 15s passed');
}
var time = new Date(),wait = 15000;
$(window).load(function(){
var currenttime = new Date() - time;
if (currenttime < wait) { setInterval(run,wait - currenttime); }
else { run(); console.log(currenttime); }
});
img {
width:100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<span></span>
<p></p>
<img src="https://effigis.com/wp-content/uploads/2015/02/Airbus_Pleiades_50cm_8bit_RGB_Yogyakarta.jpg">
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。