更新#2:
我设法使用Chrome时间线工具限制重新绘制的数量(感谢@iambriansreed的建议)。这种限制似乎解决了这个问题(将在下面添加答案),或者至少使它不常见,以至于不再是问题。
但是,每当我修改一个元素的innerHTML时,它仍会进行“布局”渲染(这与我正在编写的插件有很多关系)。我在修改它时尝试将其设为position: fixed
(因为这不会影响布局中除此之外的任何其他内容),但它似乎没有任何区别。
更新#1:
特别是.onload
函数导致这种情况......它也发生在document.ready
上。我认为这就是发生的事情:
有没有人知道如何检测重绘的时间,以便我当时不查询它? (P.S.为什么IE在绘制时不会“暂停”?!)
在$(document).ready(...)
上我经历了两次for循环,每次都通过身体的宽度($('body').width();
)发出警告。我得到了一个我期望的值(例如1092)。
在$(window).on('load', ...)
上我经过另一次for循环两次,每次都通知身体的宽度。我第一次得到0(并且页面在警报后面看起来完全空白),然后是我期望第二次通过的值(例如1092)。
这是一个我无法在精简示例中复制的问题,也没有任何其他浏览器(Chrome,Safari,Firefox,IE9,IE10)。
有没有人有任何想法或其他我可以测试的东西?
我正在使用$(window).on('load', ...)
根据宽度来剪切一些div,这取决于它们的字体大小,这是基于webfont(不一定是在$(document).ready(...)
时加载的火灾)。
答案 0 :(得分:0)
我有类似的问题,我发现使用innerWidth()可以在所有浏览器中使用。
jQuery('body').innerWidth();
答案 1 :(得分:0)
我设法使用Chrome时间线工具限制重新绘制的数量(感谢@iambriansreed的建议)。这种限制似乎解决了这个问题,或者至少使它不那么频繁,以至于它不再是一个问题。