function dropResource() {
var imgIndex = getImageIndexByID(currentDragImageID);
var newImgID = resourceData.length;
// Create the image
$('#thePage').append('<img alt="Big" id="imgA' + newImgID + '" src="' + uploadFolder + '/' + imgData[imgIndex][1] + '" class="mediaImg" />');
// Get properties
var imgW = $('#imgA' + newImgID).width();
var imgH = $('#imgA' + newImgID).height();
var imgX = $('#imgA' + newImgID).position().left;
var imgY = $('#imgA' + newImgID).position().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,
Этот код добавляет изображение в моем районе падения после того, как эскиз уронили в. Проблема, ширина и высота изображения выходят как 0, 0, потому что ajax вызывается перед тем, как изображение имеет возможность загрузить ... Если я раскомментирую предупреждение и дождитесь, пока изображение загрузится полностью, оно будет работать нормально.Javascript ждать изображения для загрузки перед вызовом Ajax
Есть ли все-таки обойти это?
Спасибо, кажется, работает отлично! –
@Tom: Хорошо, рад, что помогло. Обязательно проверяйте кешированные изображения и такие (на всякий случай) и в самых разных браузерах. Обратите внимание на бит о том, что, возможно, нужно установить 'src' отдельно, я подозреваю, что вы захотите это сделать. –
@Tom (и все): Я хотел доказать себе, что 'img', созданный с помощью jQuery, запускал событие' load' до того, как был добавлен в DOM, и поэтому я сделал серию сценариев: http: // jsbin.com/oduve5 И это так. Я бы обязательно установил 'src' только после добавления обработчика' load'. –