我面临一个相当简单的问题,但我已经对导致该问题的原因毫无头绪了。在我的一个应用程序中,我使用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" />');
然后设置值。我尝试了同样的事情,但是用1步代替之后再设置图像src。
我试图在页面上放置一个占位符<img src="placeholder.png" id="cropbox" />
,并在点击按钮后更改源。这有效,但裁剪区域保持图像的大小(300x180px或类似),而不会变大。
// 编辑:
尝试更多后,我发现图像源被正确地替换了!(使用Firefox显示选定文本的源),我检查了URL,但这是正确的URL和工作中的图像。
在裁剪区域应该出现的位置,有一个10x10像素的白点,裁剪图标(加号)弹出..但是正如之前所说:图片没有显示。
// 编辑2:
因此,我获取了第一次和第二次尝试相同图像的源。如之前所述,第一次尝试图片不会正确加载,而第二次尝试却可以(仅当第二次尝试是相同的图像时(!!))。
选择的页面源显示1个区别,即第一次尝试:
<img style="position: absolute; width: 0px; height: 0px;" src="http://95.142.175.17/uploads/files/Desert.jpg">
第二次尝试:
<img style="position: absolute; width: 700px; height: 525px;" src="http://95.142.175.17/uploads/files/Desert.jpg">
我猜这就是被 jCrop 替换的图片,但是第一次它为什么会把高度/宽度设置为 0,第二次才设置正确的尺寸,这完全让人困惑。