在页面加载之前启动setInterval

时间:2014-05-10 23:51:13

标签: javascript setinterval

有没有办法在window.onloaddocument.readystate loading等其他事件之前开始间隔?

我希望间隔在所有事情之前开始..我正在尝试一些实验:

http://jsfiddle.net/nv7Rh/

http://jsfiddle.net/Wy3JN/


更新这会从放置在监控图像加载的正文中的脚本启动计时器间隔,然后window.load停止它:

jsfiddle / nv7Rh / 1 /

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

现在我很好

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

document.querySelector(".foo").doSomething();

但:

var foo = document.querySelector(".foo"); foo && foo.doSomething();

答案 2 :(得分:0)

您可以在任何页面事件之前启动间隔。只需从不在事件处理程序中的代码启动它。

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

示例:

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