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画像がロードされる前にajaxが呼び出されているからです...警告を解除し、画像が完全に読み込まれるまで待ってください。Javascriptがこのコード
これを回避する方法はありますか?
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
イベントをフック、そしてだけにして#thePage
要素にそれを追加することによって(DOMに追加している:私はおそらく、物事を少し並べ替えたい
ありがとうございます。 –
@トム:うれしい、喜んで助けた。キャッシュされた画像など(万一の場合)やさまざまなブラウザでテストしてください。別々に 'src'を設定する必要があるかもしれないことに注意してください。あなたはそれをしたいと思うでしょう。 –
@Tom(およびすべて):jQueryを介して作成された 'img'がDOMに追加される前に' load'イベントをトリガーしたことを証明したいので、一連のシナリオを実行しました:http:// jsbin.com/oduve5そしてそうです。私は 'load'ハンドラを追加した後で' src'を設定するようにしています。 –