私は非常に単純な問題を抱えていますが、何が問題を引き起こしているのか見当がつかなくなりました。私のアプリケーションの1つでは、バナーやヘッダーなどに収まるように画像を切り抜くための小さなアドオンとしてjCropを使用しています。次の手順を実行します。
1) Select an image (using CKFinder for this, CKFinder returns the image path to an input field)
2) Click a button to load the image
3) Crop the image
4) Save the image
ケースの約75%ですべてが計画どおりに進みますが、他の25%のケースでは、jCropがトリミング領域の読み込みに失敗し、空白のままになります。これが私が使用しているjQueryコードです:
jQuery('#selectimg').live('click', function(e) {
e.preventDefault();
var newsrc = jQuery('#img2').val();
jQuery('#cropbox').attr('src', newsrc);
var jcrop_api = jQuery.Jcrop('#cropbox', {
boxWidth: 700,
boxHeight: 700,
onSelect: updateCoords,
onChange: updateCoords
});
//Some other JS code come's here for buttons (they work all the time)
});
#cropboxがトリミング可能な領域で変換されている部分を離れると、画像が正常に読み込まれていることに気付きました。そのため、間違いはそのvar = jcrop_api
部分にありますが、これに対する解決策はないとゆっくりと考え始めます。 ..
これは私がこれまでに試したことです:
div<div id="cropper-box"></div>
を作成して使用jQuery('#cropper-box').append('<img src="" id="cropbox" />');
し、後で値を設定します。同じことを試しましたが、画像srcを後でではなく1ステップで設定しました。
ページにプレースホルダーを配置し<img src="placeholder.png" id="cropbox" />
、ボタンをクリックしてソースを変更しようとしました。これは機能しますが、cropperareaは画像のサイズ(300x180pxなど)のままであり、本来のように大きくなりません。
// 編集:
もう少し試してみると、画像ソースが適切に置き換えられていることがわかりました(!Firefoxを使用して選択したテキストのソースを表示します)。URLを再確認しましたが、これは正しいURLであり、機能する画像でした。
クロッパーがあるべき場所に、クロッパーアイコン(プラス記号)がポップアップする約10x10ピクセルの白いスポットがあります。しかし、前に述べたように、画像は表示されません。
//編集2:
そのため、同じ画像の1回目と2回目の両方の試行のソースを取得しました。前に述べたように、最初の試行では画像が正しく読み込まれず、2回目の試行では読み込まれます(2回目の試行が同じ画像(!!)の場合のみ)。
選択したページソースには1つの違いがあります。つまり、最初に試してください。
<img style="position: absolute; width: 0px; height: 0px;" src="http://95.142.175.17/uploads/files/Desert.jpg">
2回目の試行:
<img style="position: absolute; width: 700px; height: 525px;" src="http://95.142.175.17/uploads/files/Desert.jpg">
これはjCropに置き換えられる画像だと思いますが、最初に0の高さ/幅を配置し、2回目に適切なサイズを配置するのは完全ななぞなぞです。