Javascript 在页面加载之前启动设置间隔

Javascript 在页面加载之前启动设置间隔,javascript,setinterval,Javascript,Setinterval,是否有方法在窗口.onload或其他事件(如document.readystate加载)之前开始间隔? 我要在一切开始之前开始休息。。我正在尝试一些实验: 更新此操作从放置在监视图像加载的正文中的脚本开始计时,然后是窗口。加载停止: jsfiddle/nv7Rh/1/ 如果图像未加载到缓存中,则会发生这种情况,因此我清除缓存以重新测试 现在我确定了您可以在DOMContentReady(第一个加载事件,指示文档已被解析)之前执行的代码中启动setInterval,前提是它位于内联脚本标记或

是否有方法在
窗口.onload
或其他事件(如
document.readystate加载
)之前开始间隔?

我要在一切开始之前开始休息。。我正在尝试一些实验:


更新此操作从放置在监视图像加载的正文中的脚本开始计时,然后是
窗口。加载
停止:

jsfiddle/nv7Rh/1/

如果图像未加载到缓存中,则会发生这种情况,因此我清除缓存以重新测试


现在我确定了

您可以在DOMContentReady(第一个加载事件,指示文档已被解析)之前执行的代码中启动setInterval,前提是它位于内联脚本标记或非异步外部脚本中。异步脚本可以在稍后的onload事件(解析所有资源后运行)之前运行


如果您需要间隔来引用非阻塞脚本中定义的函数,您可以设置一个处理程序数组来注册函数,间隔将在每次运行时查找并执行。

只需在这些函数之外运行间隔函数。如果您认为该元素尚未加载,只需确保代码在执行任何操作之前检查该元素是否存在,例如,不要只是:

document.querySelector(".foo").doSomething();
但是:


您完全可以在任何页面事件之前开始一个间隔。只需从事件处理程序之外的代码开始

但是,如果要从间隔处理程序更新页面中的某些内容,则必须等到有页面要更新。例如,如果使用
getElementById
查找要更新的元素,则应检查是否返回空引用,因为这意味着该元素尚不存在

例如:

window.setInterval(function(){
  var clock = document.getElementById('clock');
  if (clock != null) {
    clock.innerHTML = new Date().toString();
  }
}, 100);

如果您不假设某个元素存在,那么就没有理由不提前开始一个间隔(除了可能的间隔级联之外)。然而,我仍然对事件的顺序感到困惑:如果我更改它们的顺序,结果就会改变……我不是专家,我是javascript新手。。请你举个例子好吗?
window.setInterval(function(){
  var clock = document.getElementById('clock');
  if (clock != null) {
    clock.innerHTML = new Date().toString();
  }
}, 100);