Просмотр полной версии : Проверка картинки на существование и на ее полную загрузку
syegorius
08.06.2011, 09:23
Доброе время суток. В скрипте написал такое чудо:
var newImg = new Image();
newImg.src = src;
var $iw = newImg.width;
var $ih = newImg.height;
Но очень часто $iw и $ih не правильные... Я подозреваю, что это потому что картинка не успевает загрузится...
Как проверить загрузилась ли она, а если картинки не существует, то как заменить src на, например, standart.jpg?
В интернете нашел метод onload и onerror, но не совсем понял как ими пользоваться и куда мне тут их надо вставить...
Заранее спасибо за ответы...
var newImg = new Image();
newImg.onload = function() {
$iw = newImg.width;
$ig = newImg.height;
}
newImg.src = src;
syegorius
08.06.2011, 10:09
Такой вопрос напрашивается - если newImg.src = src; стоит после newImg.onload = function(); то как оно знает какую картинку проверять на onload?
Такой вопрос напрашивается - если newImg.src = src; стоит после newImg.onload = function();
- Доктор, если я делаю вот так (сворачивается в немыслимую позу)... То у меня сильно болит вот сдесь.
- Не делайте так.
syegorius
08.06.2011, 10:28
))) хорошо... ну а если у меня там стоит цикл типа
for(i=0; i<10; i++){
var newImg = new Image();
newImg.onload = function() {
$iw = newImg.width;
$ig = newImg.height;
}
newImg.src = 'img'+i+'.jpg';
}
оно нормально будет работать?
а если у меня там стоит цикл типа
for(i=0; i<10; i++){
var newImg = new Image();
newImg.onload = function() {
$iw = newImg.width;
$ig = newImg.height;
}
newImg.src = 'img'+i+'.jpg';
}
Что мешает переставить местами...
for(i=0; i<10; i++){
var newImg = new Image();
newImg.src = 'img'+i+'.jpg';
newImg.onload = function() {
$iw = newImg.width;
$ig = newImg.height;
}
}
В любом случае нужно просто попробовать...
Вы присваиваете высоты 10 картинок одной переменной. Что тут должно нормально работать?
Kolyaj, может это он только для "примера" такое написал... :)
Что мешает переставить местами...
Не надо переставлять местами, проблемы начнутся.
Kolyaj, может это он только для "примера" такое написал...
Всё равно не будет работать.
http://javascript.ru/basic/closure#primer-oshibochnogo-ispolzovaniya
syegorius
08.06.2011, 10:54
написал вот такое:
var newImg = new Image();
newImg.src = src;
newImg.onload = function(){
$iw = newImg.width;
$ih = newImg.height;
}
newImg.onerror = function(){
alert('a');
$(this).attr('src', '/frontend/img/oops.png');
$iw = 450;
$ih = 450;
}
но onerror ничего не происходит. Хотя должно! Что не так?
syegorius, ты примеры-то тестовые делай... :) А не огрызки...
syegorius
08.06.2011, 11:15
всмысле примеры? весь кусок кода что ли показать?
syegorius
08.06.2011, 11:16
и кстати все равно не работает даже onload. из 9 существующих картинок он только в семи определил их ширину и высоту...
всмысле примеры? весь кусок кода что ли показать?
Сделать такой кусок, который можно скопировать, вставить и запустить у себя. Текст этого должен быть минимальным, простым но иллюстрирующим проблему.
Посмотри какие примеры выкладывают тут. Их тут же можно запустить на выполнение и посмотреть...
syegorius
08.06.2011, 12:13
вобщем получилось что в chrome и, что меня сильно удивило, в ie8 работает нормально. В опере 9 и 11 и мозилле не работает... кто-то может мне чем-то помочь... может есть какие-то другие способы найти ширину и высоту какртинки и проверить на ее наличие?
Пока вы не научитесь читать, что вам пишут, вам никто не сможет помочь.
Что мешает переставить местами...
Не надо переставлять местами, проблемы начнутся.
var img = new Image();
img.onload = function() {
alert('Loaded: '+img.src+' :: W = '+img.width+' :: H = '+img.height);
}
img.src = "http://javascript.ru/forum/images/smilies/smile.gif";
syegorius
08.06.2011, 12:54
да я и так все вернул на свои места...
запустите этот код в мозилле и поймете о чем я
var img = new Image();
img.onload = function(){
alert('Loaded: '+img.src+' :: W = '+img.width+' :: H = '+img.height);
}
img.onerror = function(){
alert('ERROR');
}
img.src = "http://javascript.ru/forum/images/smilies/smilebla-bla.gif";
syegorius
08.06.2011, 12:59
ага... ладно работает почемуто... щас дальше буду разбираться
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot