Показать сообщение отдельно
  #6 (permalink)  
Старый 20.05.2014, 12:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от rafonets Посмотреть сообщение
Хоть и с опозданием на 2 года, но т.к. попал на тему с поисковика, думаю будет актуально и для других, вот рабочий код (у меня):

var href = "картинка.jpg",
     imgWidth,
     img = new Image();

img.onload = function(){
  alert(img.width + 'x' + img.height); // здесь работает
  imgWidth = img.width;
}
img.src = href;

// Здесь не заработает, т.к. переменная imgWidth пустая..., она
//заполнится после загрузки картинки, а алерт сработает сразу.
alert(imgWidth + 'x'); // здесь не работает

// Делаем так:
window.onload = function(){
   alert(imgWidth + 'x'); // здесь работает
   // Вызывается после полной загрузки страницы.
   // (картинки, css, js, html и прочего) все-все...
}
Прошло 2 года, а рабочий нормальный код теперь такой :

(function (global, name, def) {
  if (typeof (define) == 'function' && define['amd']) define(name, def);
   else global[name] = def();
}) (this, 'loadImage', function () {
  return function (imageSrc, done) {
    var q = new Promise(function (res, rej) {
      var img = new Image();
      img.src = imageSrc;
      img.onerror = function (e) {
        rej(e);
      };
      img.onload = function (e) {
        res(img);
      };
      if (img.complete) res(img);
    });
    return q;
  }
});

loadImage('http://upload.wikimedia.org/wikipedia/ru/8/8d/ImageComicsLogo.gif').then(function (img) {
  alert('Картинка: ' + img);
}, function (e) {
  alert('Ошибка при загрузке картинки: ' + e);
});

Последний раз редактировалось melky, 20.05.2014 в 13:40.
Ответить с цитированием