有没有办法在window.onload
或document.readystate loading
等其他事件之前开始间隔?
我希望间隔在所有事情之前开始..我正在尝试一些实验:
更新这会从放置在监控图像加载的正文中的脚本启动计时器间隔,然后window.load
停止它:
jsfiddle / nv7Rh / 1 /
如果图像未加载到缓存中,则会发生这种情况,因此我清除缓存以进行重新测试。
现在我很好
答案 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);