Помогите понять "глюк"
$(document).ready(function() { var eImg0 = document.querySelectorAll(".b-slider-img-container--img")[0]; var oImg0Style = window.getComputedStyle(eImg0); var iImg0Width = parseInt(oImg0Style.getPropertyValue('width')); var iImg0Height = parseInt(oImg0Style.getPropertyValue('height')); console.log('iImg0Width = ' + iImg0Width); } При верстании (на локалке) у меня через раз выходит iImg0Width = 0.. Это начинает очень бесить и , вдруг, такие сюрпризы будут всплывать и на сервере? Почему проскакивает такая ширина? Не успевает загружается в DOM? |
Цитата:
Проверяй свойство eImg0.complete, и если оно false, то вешай обработчик onload и замеры делай уже в callback'е. Ширину картинки можно получить проще (если картинки видимы): img.offsetWidth Но она включает в себя также border-width |
Faab,
или не $(document).ready а $(window).load |
рони, блин, хотел же написать, но пока разбирался с шириной - забыл :))
|
Цитата:
Цитата:
|
Цитата:
$(window).load(){ var eImg0 = document.querySelectorAll(".b-slider-img-container--img")[0]; if(eImg0.complete){ var oImg0Style = window.getComputedStyle(eImg0); var iImg0Width = parseInt(oImg0Style.getPropertyValue('width')); var iImg0Height = parseInt(oImg0Style.getPropertyValue('height')); console.log('iImg0Width = ' + iImg0Width); }else{ eImg0.load(null;null;funtion(){ var oImg0Style = window.getComputedStyle(eImg0); var iImg0Width = parseInt(oImg0Style.getPropertyValue('width')); var iImg0Height = parseInt(oImg0Style.getPropertyValue('height')); console.log('iImg0Width = ' + iImg0Width); }){}; }; }; |
Цитата:
Цитата:
|
Faab, нужно использовать либо $(window).load либо $(document).ready + $(img).load
$(window).load + $(img).load вариант лишен смысла. |
Спасибо. Разница оказывается большая. Я так понимаю ready создана лишь для того что бы экономить время там, где работа скрипта не связана напрямую с изображениями?
|
Часовой пояс GMT +3, время: 09:55. |