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 等的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 和 IE8 上的 Jcrop 问题 - 仅在页面刷新时才显示裁剪