Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрипт отображения веса картинки, помогите подправить (https://javascript.ru/forum/misc/57088-skript-otobrazheniya-vesa-kartinki-pomogite-podpravit.html)

VINRARUS 19.07.2015 07:39

Скрипт отображения веса картинки, помогите подправить
 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
var zDel = "http://vinrarus.ucoz.net/DDD.png";
var imgas = new Image();
imgas.src = zDel;
var zheight = imgas.naturalHeight;
var zwidth = imgas.naturalWidth;

//А дальше не родной код
var zsize = 0;
  var request;
  request = $.ajax({
    type: "HEAD",
    url: zDel,
    success: function () {
      var zsize = request.getResponseHeader("Content-Length");
      alert(zheight +'x'+ zwidth+'-'+zsize);
    }
  });

     alert(zheight +'x'+ zwidth+'-'+zsize);
</script><BR>БР

ШИИРИНАхВЫСОТА-ВЕС изображения, как видно в 1м сообщении все как нада, но за пределами функции переменная zsize не подхватывается чето. :-?

Бонус:
1) как на ходу байты в килобайты превратить?
2) может как то более грамотно можно обьеденить эти 2 части кода?

VINRARUS 19.07.2015 07:55

Толи они в 2 потока как то обрабатываются...

kostyanet 19.07.2015 08:59

1) поделить на 1024
2) засунуть первую часть кода на место alert() второй части кода

VINRARUS 19.07.2015 10:24

kostyanet,
1) спасибо
2) в первом alert ломаются дополнительно и переменные ширины и высоты, во втором толку нуль

Напоминаю что нужны все 3 рабочие переменные zheight, zwidth, zsize после этого кода.

kostyanet 19.07.2015 11:07

За вас что ли засунуть? Ну, попробую:

var getImageData=function(url,callback){

	var img_data={w:0,h:0,b:0};

	$.ajax({
		type: "HEAD",
		url:url,
		success: function () {
			img_data.b = this.getResponseHeader("Content-Length")/1024;
			var img = new Image();
			img.onload=function(){
				img_data.w=this.width;
				img_data.h=this.height;
				if(callback)
					callback(img_data);
				else
					window.img_data=img_data;
			};
			img.src = url;
		}
	});
};

/* usage */

getImageData('http://vinrarus.ucoz.net/DDD.png',function(d){
	alert(d.w+' '+d.h+' '+d.b);
});

KosBeg 19.07.2015 11:07

Цитата:

Сообщение от VINRARUS
но за пределами функции переменная zsize не подхватывается чето.

наверно тут CORS - кросдоменный аякс запрещен...
поэотму если картинка на домене отличному от текущего - ничего не будет)
а переменные "zheight" и "zwidth" берутся не з ответа аякса, поэтому доступны

kostyanet 19.07.2015 11:11

За

img_data.b = this

не уверен, но верю что жикверя не должна требовать хардкода для обращения к собственному объекту внутри собственной же функции.

Например в колбеке объекта XMLHttpRequest - this - он сам.

kostyanet 19.07.2015 11:13

Цитата:

Сообщение от KosBeg
наверно тут CORS - кросдоменный аякс запрещен.

Судя по химерическим именам переменных дело происходит во внутренностях ю-козы.

KosBeg 19.07.2015 11:22

так работает - но только в пределах домена,
с домена "vinrarus.ucoz.net" нельзя послать запрос на "vinrarus.com" или например "google.com"
PS: это никак не лечится! вариант есть только один - купить гугл и его домен :D
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
var zDel = "http://vinrarus.ucoz.net/DDD.png";
var imgas = new Image();
imgas.src = zDel;
var zheight = imgas.naturalHeight;
var zwidth = imgas.naturalWidth;

//А дальше не родной код
var zsize = 0;
  var request;
  request = $.ajax({
    type: "HEAD",
    url: zDel,
    success: function () {
      window.zsize = request.getResponseHeader("Content-Length")/1024;
    }
  });

  alert(zheight +'x'+ zwidth+'-'+zsize);
</script><BR>БР

VINRARUS 19.07.2015 11:44

Цитата:

Сообщение от kostyanet
Судя по химерическим именам переменных дело происходит во внутренностях ю-козы.

Скажу по секрету что дело происходит внутри мобильного телефона через " httpd -p 80 -h /usr/vin/www". ;)
http://192.168.16.2
Но и там и там код работает в равных условиях.
Цитата:

Сообщение от kostyanet
За вас что ли засунуть? Ну, попробую:

совсем не работает :(
Цитата:

Сообщение от KosBeg
так работает - но только в пределах домена

Сам смотри, вес не отображает: http://vinrarus.ucoz.net/index/0-16


Часовой пояс GMT +3, время: 20:17.