Обновление № 2:
Мне удалось ограничить количество повторных красок, используя инструмент Chrome Timeline (спасибо @iambriansreed за предложение). Это ограничение, по-видимому, решило проблему (добавит ответ ниже) или, по крайней мере, сделает его настолько редким, что это уже не проблема.
Тем не менее, он по-прежнему выполняет рендеринг "Макет" всякий раз, когда я изменяю innerHTML элемента (что очень много с плагином, который я пишу). Я попытался сделать это position: fixed
пока я его изменяю (поскольку это не повлияет ни на что другое в макете, кроме самого себя), но это, похоже, не имеет никакого значения.
Обновление # 1:
Это не функция .onload
в частности, которая вызывает это... это также происходит на document.ready
. Я думаю, что это то, что происходит:
Кто-нибудь знает, как определить, когда происходит перерисовка, чтобы я не запрашивал его в тот момент? (PS почему IE не "останавливается", пока он рисует?!)
На $(document).ready(...)
я дважды запускаю цикл for и оповещает о ширине тела ($('body').width();
) каждый раз через. Я получаю значение, которое я ожидаю (например, 1092).
В $(window).on('load',...)
я пробегаю по другому для цикла дважды, также каждый раз пропуская ширину тела. Я получаю 0 первый раз (и страница выглядит полностью пустой за предупреждением), а затем значение, которое я ожидал бы во второй раз (например, 1092).
Это проблема, которую я не могу реплицировать в урезанный пример, ни в любой другой браузер (Chrome, Safari, Firefox, IE9, IE10).
У кого-нибудь есть идеи или другие вещи, на которые я мог бы проверить?
Я использую $(window).on('load',...)
чтобы разрезать некоторые div на основе их ширины, которая основана на их размере шрифта, который основан на webfont (который не обязательно загружается время $(document).ready(...)
срабатывает).
Мне удалось ограничить количество повторных красок, используя инструмент Chrome Timeline (спасибо @iambriansreed за предложение). Это ограничение, похоже, решило проблему или, по крайней мере, сделало ее настолько редкой, что это уже не проблема.
У меня есть аналогичная проблема, и я обнаружил, что использование innerWidth() вместо этого работает во всех браузерах.
jQuery('body').innerWidth();
innerWidth()
возвращает отступы + область содержимого, в то время как width()
возвращает только область содержимого
alert
было в порядке, что происходит раньше, чем в других браузерах.$(document).ready
. Это как в$(window).load
это «перерисовывает», так как я пытаюсь получить ширину.