Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2009, 22:34
Интересующийся
Отправить личное сообщение для miller Посмотреть профиль Найти все сообщения от miller
 
Регистрация: 17.08.2009
Сообщений: 22

Взять ширину img в google chrome
Всем доброго времени суток!

Столкнулся со следующей проблемой: необходимо взять ширину/высоту <img/> в браузере GoogleChrome. Использую jQuery, .width(), client/offsetWidth не помогают.
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2009, 23:21
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Код покажите
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2009, 23:27
Интересующийся
Отправить личное сообщение для miller Посмотреть профиль Найти все сообщения от miller
 
Регистрация: 17.08.2009
Сообщений: 22

Код выполняется в $(document).ready т.е. все картинки поидее загружены
$("#brands_gallery .item").each(function(){
	var width = $(this).find('.real img').width();
	var height = $(this).find('.real img').height();
	var left = ($("#brands_gallery .items .item").width()-width)/2;
	var top = ($("#brands_gallery .items .item").height()-height)/2;
	//...
});


Работает везде, кроме хрома.
Вариант с $(this).find('.real img').get(0).clientWidth; тоже не прокатывает.

Алерт выдаёт 0, при alert($(this).find('.real img').css('width')) выдаёт 0

HTML:

<div class="item">
	<p class="real"><img src="img/brands/1.png" alt="" /></p>
	<p class="hover"><img src="img/brands/1_hover.png" alt="" /></p>
</div>
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2009, 23:33
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от miller
Код выполняется в $(document).ready т.е. все картинки поидее загружены
Нет, это событие DOMContentLoaded, когда готова DOM-модель документа и доступна для изменения. Событие загрузки страницы (вместе с картинками) window.onload.

Последний раз редактировалось Octane, 24.09.2009 в 23:36.
Ответить с цитированием
  #5 (permalink)  
Старый 24.09.2009, 23:47
Интересующийся
Отправить личное сообщение для miller Посмотреть профиль Найти все сообщения от miller
 
Регистрация: 17.08.2009
Сообщений: 22

Не помогло, и в ИЕ6 стала появляться ошибка "Не поддерживается" прямо после строки вызова onload:

var galleryConstruct = function() {
	var width = $(this).find('.real img').width();
	var height = $(this).find('.real img').height();
}
window.onload = galleryConstruct();
Ответить с цитированием
  #6 (permalink)  
Старый 24.09.2009, 23:52
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

потому что вы присвоили обработчику события результат выполнения функции.
window.onload = galleryConstruct;

и вы же jQuery используете
$(window).load(…);
Ответить с цитированием
  #7 (permalink)  
Старый 24.09.2009, 23:57
Интересующийся
Отправить личное сообщение для miller Посмотреть профиль Найти все сообщения от miller
 
Регистрация: 17.08.2009
Сообщений: 22

уже сделал так, не помогло

главное только в хроме..
с чем это может быть связано? даже в ие и опере всё работает

Последний раз редактировалось Octane, 25.09.2009 в 00:01. Причина: объединение сообщений
Ответить с цитированием
  #8 (permalink)  
Старый 25.09.2009, 00:01
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от miller
var galleryConstruct = function() {
	var width = $(this).find('.real img').width();
	var height = $(this).find('.real img').height();
}
А зачем $(this).find('.real img'), а не просто $('.real img')?

Последний раз редактировалось Octane, 25.09.2009 в 00:04.
Ответить с цитированием
  #9 (permalink)  
Старый 25.09.2009, 00:04
Интересующийся
Отправить личное сообщение для miller Посмотреть профиль Найти все сообщения от miller
 
Регистрация: 17.08.2009
Сообщений: 22

Виноват) функция большая, написал только проблемную часть.. пропустил строчку с each:

var galleryConstruct = function() {
	$("#brands_gallery").scrollable({horizontal:true});
	$("#brands_gallery .item").each(function(){
		var width = $(this).find('.real img').width();
		var height = $(this).find('.real img').height();
		//...
	});
}
$(window).load(galleryConstruct());
Ответить с цитированием
  #10 (permalink)  
Старый 25.09.2009, 00:09
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от miller
window.onload = galleryConstruct();
Сообщение от miller
$(window).load(galleryConstruct());
Сообщение от Octane
вы присвоили обработчику события результат выполнения функции
Прочитайте еще раз внимательно. Нужно передавать ссылку на функцию
Сообщение от Octane
window.onload = galleryConstruct;
или
$(window).load(galleryConstruct);
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google Chrome Андрей Параничев Opera, Safari и др. 42 02.08.2009 14:23