Я работаю над галереей, которая отображает полное изображение внутри всплывающей подсказки при наведении на миниатюры. Проблема в том, что эти полные изображения обычно выходят за пределы видоискателя. Чтобы исправить это, я перемещаю всплывающую подсказку, если изображение выходит за границы окна, что требует немедленного знания размеров изображения (чтобы избежать всплывающей подсказки).
Однако загрузка изображений занимает немного времени (.gifs), поэтому я не могу ждать в DOM, чтобы получить размеры. Итак, я вызываю PHP-скрипт для возврата размеров изображения перед их загрузкой.
Проблема в том, что мой вызов $ .get не отвечает. Я знаю, что скрипт PHP работает нормально, но я не получаю никаких данных от него через jquery. Любая помощь будет принята с благодарностью. Спасибо !!
hover.js:
this.imagePreview = function(){
$("a.preview").hover(function(e){
var viewHeight = $(window).height() + $(window).scrollTop();
var viewWidth = $(window).width();
var xOffset=e.pageX+40;
var yOffset=e.pageY+40;
var url = 'http://mysite.com/i/' + this.href.slice(20);
var w = 0;
var h = 0;
$("body").append("<div id='preview'><img src=" + url +" id='img'/></div>");
$.get("getDimensions.php/?img=" + url, function(data){
w = data.w;
h = data.h;
$("body").append("INFO ABOUT IMAGE DIMENSIONS TRIGGERED: " + w + h);
});
$("#preview")
.css("top",yOffset + "px")
.css("left",xOffset + "px")
.fadeIn("fast");
$('#img').load(function() {
if((e.pageX+img.width)>viewWidth) { xOffset=e.pageX-img.width-70; }
if((e.pageY+img.height)>viewHeight) { yOffset=e.pageY-img.height-70; }
$("#preview")
.css("top",yOffset + "px")
.css("left",xOffset + "px")
.fadeIn("fast");
});
},
function(){
$("#preview").remove();
});
};
// starting the script on page load
$(document).ready(function(){
imagePreview();
});
getDimensions.php:
<?php
list($width, $height, $type, $attr) = getimagesize($img);
echo json_encode(array("w"=>$width,"h"=>$height));
?>