Я бы, наверное, немного переставил вещи:
function dropResource() {
var imgIndex = getImageIndexByID(currentDragImageID);
var newImgID = resourceData.length;
var newImage;
// Create the image
newImage = $('<img alt="Big" id="imgA' + newImgID + '" src="' + uploadFolder + '/' + imgData[imgIndex][1] + '" class="mediaImg" />');
newImage.load(function() {
// Get properties
var imgW = newImage.width();
var imgH = newImage.height();
var imgPos = newImage.position();
var imgX = imgPos.left;
var imgY = imgPos.top;
// Add to array (dbID, imgarrIndex, width, height, x, y)
resourceData[newImgID] = new Array(0, imgIndex, imgW, imgH, imgX, imgY);
//alert('artworkAjaxHandler.ashx?type=addResource&uploadID=' + currentDragImageID + '&page=' + currentPage + '&w=' + imgW + '&h=' + imgH + '&x=' + imgX + '&y=' + imgY);
// Save this as a resource
$.ajax({
url: 'artworkAjaxHandler.ashx?type=addResource&uploadID=' + currentDragImageID + '&page=' + currentPage + '&w=' + imgW + '&h=' + imgH + '&x=' + imgX + '&y=' + imgY,
});
$('#thePage').append(newImage);
Для этого нужно создать элемент img
, перехватить его событие load
и только затем добавить его в DOM (добавив его к элементу #thePage
). Все остальные действия выполняются в обработчике load
. Обратите внимание, что мы обязательно подключаем обработчик load
перед добавлением в DOM, поэтому событие load
не срабатывает до того, как мы подключим его.
Если вы действительно хотите быть осторожным, вы можете даже отложить установку свойства src
до тех пор, пока мы не перехватим load
, чтобы быть уверенным. Для этого измените:
newImage = $('<img alt="Big" id="imgA' + newImgID + '" src="' + uploadFolder + '/' + imgData[imgIndex][1] + '" class="mediaImg" />');
newImage.load(function() {
// ...
});
$('#thePage').append(newImage);
до
newImage = $('<img alt="Big" id="imgA' + newImgID + '" class="mediaImg" />');
newImage.load(function() {
// ...
});
newImage[0].src = uploadFolder + '/' + imgData[imgIndex][1];
$('#thePage').append(newImage);