微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery,如果页面已加载并经过时间

如何解决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 举报,一经查实,本站将立刻删除。