Google Chrome переставляет элементы после события onload
Привет!
Хочу разобраться с событиями. Есть 3 блочных элемента. 2 сверху, 1 под ними. Я хочу изменить ширину нижнего элемента по ширине 2х верхних. blank.style.width=triangle_right.offsetLeft-triangle_left.offsetLeft-triangle_left.offsetWidth+"px"; blank - нижний triangle_left и triangle_right - верхние Есть браузер Google Chrome, который переставляет triangle_right влево на 200пх после события window.onload. Библиотеку jQuery использовать не хочу. Потому что это - слишком простая задача. Вопрос: какое событие возникает, когда браузер завершает переставлять элементы после загрузки страницы? Других скриптов нет. Ниже оффтопик/что сделано: По событию onresize проблемы нет. В других браузерах проблемы нет. Добавление задержки в 100мс устраняет проблему на моем компе. |
http://jsfiddle.net/kEauw/4/
На jsfiddle не воспроизводится, т.к. страница большая и проходит больше 100мс до выполнения скрипта. Пока пытался воспроизвести, нашел источник проблемы. Как дождаться загрузки шрифтов? |
Проблема в некорректном, с точки зрения учебников, поведении Google Chrome.
Я написал такой код, который воспроизводит проблему. <html> <head> <style> @font-face { font-family: 'Philosopher'; font-style: normal; font-weight: 400; src: url([url]http://themes.googleusercontent.com/static/fonts/philosopher/v4/OttjxgcoEsufOGSINYBGLWOb2gHztoQeulij-[/url] 1lvl-8.woff) format('woff'); } body { font-family: Philosopher; font-size: 20px; } </style> <script> window.onload=function(){console.log('onload event -- '+document.getElementById("a").offsetWidth);} window.setTimeout('console.log("timeout 10 event -- "+document.getElementById("a").offsetWidth)',10); window.setTimeout('console.log("timeout 100 event -- "+document.getElementById("a").offsetWidth)',100); </script> </head> <body> <span id="a">qwe qwe qwe qwe</span> </body> </html> Вывод этого скрипта: onload event -- 186 timeout 10 event -- 186 timeout 100 event -- 159 И нашел другие разговоры о ней тут http://productforums.google.com/foru...me/7VIpByhmU3U По-прежнему прошу помочь разобраться в том, как правильно написать обработчик события - аналог onload без jQuery и других библиотек. |
Часовой пояс GMT +3, время: 19:34. |