jCrop API在IE中为null或不是对象,但在FF,Chrome等中有效

Wil*_*nka 3 jquery internet-explorer jcrop

我写了一个基于jCrop的extedned插件,一个接一个地裁剪多个图像.

我使用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);
Run Code Online (Sandbox Code Playgroud)

这一切都适用于Chrome和我可以使用全局触发器更改图像.我不知道为什么它在IE中不起作用?

Pio*_*ula 8

事实上,jCrop确实在文档中显示了您使用的确切行.但IE JavaScript引擎是无情的.

您需要做的是使用此行将api分配给var

var jcrop_api;

$(document).ready(function () {

jcrop_api = $.Jcrop($('#SourceImage, #body_SourceImage'), {});
Run Code Online (Sandbox Code Playgroud)

然后做其余的事.出于某种原因,this在IE中引用整个DOM而不是jCrop的回调函数并且无法分配,将API变量保留为空.

此更改不会影响Chrome,FF或其他任何内容..并且无论如何都会更加清晰.