console.time('onload')
console.time('onreadystatechange')
window.onload = ()=>{console.log('onload'); console.timeEnd('onload')}
document.onreadystatechange = ()=>{console.log('onreadystatechange');console.log(document.readyState);console.timeEnd('onreadystatechange')}
我在内联脚本中编写了上述代码,为什么结果如下?
理论上应该先执行console.time('onreadystatechange')
,但从结果来看,onreadystatechange
事件先执行,document.readyState
事件"完成",为什么事件提前?
在document.readyState
完成之前还会有其他的状态变化。
此时,onreadystatechange
功能将被触发。
console.timeEnd('onreadystatechange')
在onreadystatechange
中使用。
当console.timeEnd
被调用时,该记录对应的定时器将被清除。
因此,当后续的onreadystatechange
函数再次被调用时,将会有一个提示,因为没有重新启动设置onreadystatechange
定时器。
整个执行顺序与标准定义一致,没有问题。