3

複数の画像を次々にトリミングするために、jCropに基づいた拡張プラグインを作成しました。

Chromeを使用して開発およびデバッグしましたが、JavaScriptの問題なしですべてが正常に機能しました。私がエクスプローラーでテストするようになったとき、それは倒れて、書き出されたスクリプトエラーを投げました

jcrop api is null or not an object

だから私のJavaScriptは単純に...

var jcrop_api; //Global var to be used thorugh out the client

//some code here

//jCrop documention tells us to use this to assign itself to an object.
//I look for both because i use .net masterpages and sometimes not.

$('#SourceImage, #body_SourceImage').Jcrop({},function () { jcrop_api = this; });


//some more code but not far down the line i need to set jCrop options using API

jcrop_api.setOptions({
           boxWidth: bw,
           onSelect: updateCoords,
           minSize: [thisImage.Min.Width, thisImage.Min.Height],
           aspectRatio: thisImage.AspectRatio
       });
 jcrop_api.setImage('../cache/uploads/' + fileName);

それはすべてChromeで機能し、グローバルトリガーを使用して画像を変更できます。IEで機能しない理由がわかりません。

4

1 に答える 1

8

実際、jCropは、使用している正確な行をドキュメントに示しています。しかし、IEJavaScriptエンジンは寛容ではありません。

あなたがする必要があるのは、この行を使用してAPIを変数に割り当てることです

var jcrop_api;

$(document).ready(function () {

jcrop_api = $.Jcrop($('#SourceImage, #body_SourceImage'), {});

その後、残りを行います。何らかの理由thisで、IEではjCropのコールバック関数ではなくDOM全体を参照して割り当てに失敗し、API変数を何も残しません。

この変更は、Chrome、FF、またはその他には影響しません。いずれにしても、もう少し明確になります。

于 2012-04-18T13:14:16.390 に答える