Я использую плагин Jcrop для jQuery для работы с фотографиями.Наконец-то у меня это работает успешно в Firefox и IE8, но я испытываю странное поведение в Chrome и Safari.
Код Jcrop
var api;
$(window.load(function() {
var orimg = $('#image1');
//Create Image to get dimensions of full size photo
var pic = $('<img>').attr('src', orimg.attr('src')).css('display', 'none').appendTo('#form1');
var h = pic.height();
var w = pic.width();
//set defaults for jcrop
var opt = {
aspectRatio: 1,
onSelect: storeCoords,
onChange: storeCoords,
trueSize: [w, h], //actual size of pic vs. styled size on page
bgColor: '#EEEEEE',
bgOpacity: .7,
setSelect: [150, 150, 50, 50]
};
$('#crop_button').click(function() {
//initialize jcrop
api = $.Jcrop(orimg, opt);
});
$('#cancel_button').click(function() {
api.destroy();
});
});
function storeCoords(c) {
$('#X').val(c.x);
$('#Y').val(c.y);
$('#W').val(c.w);
$('#H').val(c.h);
}
Изначально я просто подумалон не сохранял координаты при вызове функции storeCoords
.Однако я добавил следующий код в функцию storeCoords
, чтобы увидеть, что происходит:
var msg = '';
$.each(c, function(index, value) {
msg += index + ':' + value + ' ';
});
$('#debug_output').html(msg + '<br />');
В Firefox и IE он будет выводить координаты при каждом изменении размера / перемещении поля обрезки.В Chrome / Safari (при использовании свойства onChange:
) я получаю одну строку правильных данных, но затем она перезаписывает эти данные нулями.
- x: 50 y: 50 x2: 150 y2: 150 Вт: 100 ч: 100
- х: 50 лет: 50 х2: 150 г2: 150 Вт: 100 ч: 100
- х: 0 г: 0 х2: 0 г2: 0w: 0 h: 0 x: 0 y: 0
- x2: 0 y2: 0 w: 0 h: 0 x: 0 y: 0 x2: 0 y2: 0
- w:0 ч: 0 х: 0 у: 0 х2: 0 у2: 0 ш: 0 ч: 0
- х: 0 у: 0 х2: 0 у2: 0 ш: 0 ч: 0
использование свойства onSelect:
само по себе дает все нули (Chrome / Safari)
Так что я не понимаю, почему они вызывают / перезаписывают значения.
РЕДАКТИРОВАТЬ
Я обновил код для использования $(function(){})
вместо $(window).load(function(){})
и получаю те же результаты.Я поднял демонстрационную страницу , которая дает такие же результаты.Я не уверен, является ли это ошибкой в Jcrop или чем-то, что я делаю.Это происходит только тогда, когда я указываю свойство trueSize
.Не минимизированную версию плагина можно посмотреть здесь .