2012-06-06 3 views
3

Я использую jcrop с моей страницы ASPX:IE проблемы с JCrop

<script type="text/javascript" src="../../Scripts/js/jquery.Jcrop.min.js"></script> 
<link rel="Stylesheet" href="../../Scripts/css/jquery.Jcrop.min.css" /> 

Вот моя JCrop декларация:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#' + options.ImageID).Jcrop({ 
      onChange: function (coords) { 
       $('#' + options.HiddenID).val(coords.x + ',' + coords.y + ',' + coords.w + ',' + coords.h); 
      }, 
      aspectRatio: 1 
     }); 
    }); 
</script> 

Вот мой .NET образ:

<asp:Image runat="server" ID="PhotoPreviewImage" /> 

Переменная options - это объект, созданный в коде для передачи идентификатора ClientID из PhotoPreviewImage в JS.

Это отлично работает в Chrome, оно не работает в IE9 (я даже не получаю перекрестие).

Я использую jquery.Jcrop.min.js v0.9.10 (сборка: 20120429) и JQuery V1.7.1 jquery.com

Как я могу сделать эту работу в IE?

+0

Есть ли ошибки javascript? – Aristos

+0

@Aristos - ничего, что я могу видеть :( – Liath

ответ

3

У меня были некоторые проблемы с JCrop в IE в прошлом. Я решил это, добавив события «onSelect» и «onRelease» к объекту опций. Я не знаю, поможет ли это вам в вашей ситуации, но это стоит того. Мой код выглядит следующим образом:

.Net

<asp:Image ID="cropbox" runat="server" ImageUrl="Assets/images/blank.gif" /> 

Javascript:

<script> 
$(document).ready(function() { 
    var api = $.Jcrop('#cropbox', { 
     aspectRatio: 1, 
     onSelect: update, 
     onChange: update, 
     onRelease: update 
    }); 
}); 

function update(c) { 
    //Store coords here 
} 
</script> 
+0

Мне пришлось изменить это, чтобы передать идентификатор ClientID, а не идентификатор элемента управления .NET Image, но кроме этого отлично поработал! Отредактировано, чтобы добавить это, чтобы разбить его в Chrome, но я могу обойти это! – Liath

+1

Это заставило меня работать в IE, но сломал Safari. Мне пришлось обнаруживать браузер и использовать API-метод (аналогично вышеизложенному, единственное отличие в том, что я переместил все параметры в отдельный функция) для IE и [обычный путь] (http://deepliquid.com/content/Jcrop_Manual.html) для всех других браузеров ... кажется, работает последовательно во всех браузерах. – MikeSmithDev

+0

+1. хороший ответ –

7

Я закончил тем, что для обнаружения IE и использовать один из двух форматов для инициализации:

 var is_msie = /msie/.test(navigator.userAgent.toLowerCase()); 
     var jcrop_obj; 

     if (is_msie) { 
      jcrop_obj = jQuery.Jcrop('#img', { 
       onSelect: jcrop_onEndCrop, 
       minSize: [ 20, 20 ], 
       setSelect: [ x, y, x2, y2 ], 
       allowSelect: false 
      }); 
     } 
     else { 
      jQuery('#img').Jcrop({ 
       onSelect: jcrop_onEndCrop, 
       minSize: [ 20, 20 ], 
       setSelect: [ x, y, x2, y2 ], 
       allowSelect: false 
      },function(){jcrop_obj = this;}); 
     } 
+1

Просто был чтобы оставить комментарий, 5 часов выяснения, почему jCrop только инициализировался после нескольких обновлений IE, и это исправило все это :) –

+0

вы, сэр, являются героем. , но зачем проверять браузер, а не просто использовать версию IE? –

+0

@ThomasStock: версия IE не работает в Chrome. –

-1

Эта определенная фиксированная инициализация для режима совместимости IE 10.

+1

Не знаете, что означает ваш ответ. –

Смежные вопросы