我遇到DOMnode.getBoundingClientRect()的问题,因为返回的数据不一致。我正在使用windows.onload
(因为缺少更好的选项)来触发我的函数,该函数使用getBoundingClientRect().height
元素来进行一些计算。
问题是,元素的高度并不总是一致的。 window.onload
甚至应该在页面生命周期中触发,据我所知,然后应该加载内容,样式表和外部资源,但是页面显然仍然没有正确呈现,因为我有时会得到它高度值类似400,528,630,有时它正确(700)我想读的元素。
思想?
是否有其他方法可以检测a div
(或页面)何时完全呈现?
答案 0 :(得分:1)
window
的{{1}}确实意味着所有资源(包括样式表和图片)都已加载或失败,但是:
load
上正在运行其他JavaScript代码并进行更改,则这些更改也可能会影响您所看到的内容(当然)解决#2将特定于运行的代码,但如果您的问题只是#1,则短load
应修复它:
setTimeout
你可能不得不玩延迟。 0往往适用于Chrome,但Firefox往往需要至少50-60ms范围内的值。
或者只是window.onload = function() {
setTimeout(function() {
// Your code here
}, 60);
};
可能就足够了:
requestAnimationFrame
您可以将上述其中一项与window.onload = function() {
requestAnimationFrame(function() {
// Your code here
});
};
document.readyState
的检查结合使用,因为那是the very last thing the browser does(当然,除了JavaScript代码设置为在完成时运行) 。例如:
"complete"