jCrop API 在 IE 中为 null 或不是对象,但适用于 FF、Chrome 等

Posted

技术标签:

【中文标题】jCrop API 在 IE 中为 null 或不是对象,但适用于 FF、Chrome 等【英文标题】:jCrop API is null or not an object in IE, but works in FF, Chrome, etc 【发布时间】:2012-04-18 13:09:27 【问题描述】:

我写了一个基于 jCrop 的扩展插件,可以一个接一个地裁剪多个图像。

我使用 Chrome 进行开发和调试,一切正常,没有任何 javascript 问题。当我在 Explorer 中进行测试时,它摔倒并抛出了一个写出的脚本错误

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 中不起作用?

【问题讨论】:

【参考方案1】:

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

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

var jcrop_api;

$(document).ready(function () 

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

然后做剩下的。出于某种原因,IE 中的this 引用回整个 DOM 而不是 jCrop 的回调函数并且无法分配,从而使您的 API 变量一无所有。

此更改不会影响 Chrome、FF 或其他任何东西.. 并且更清晰一些。

【讨论】:

+1 因为你拯救了我的周末 :)(我的意思是,我脑子里出了一个问题)

以上是关于jCrop API 在 IE 中为 null 或不是对象,但适用于 FF、Chrome 等的主要内容,如果未能解决你的问题,请参考以下文章

IE上的fancybox iframe + jcrop问题

JCrop 的 IE 问题

Jcrop 和 IE9 图像文件未定义

Chrome 和 IE8 上的 Jcrop 问题 - 仅在页面刷新时才显示裁剪

如何重置 Jcrop 插件? IE。如何允许更改目标图像的来源?

Jcrop 在特定服务器上的 IE8 下失败,在另一个服务器上工作