3

ページに画像を追加してからJCropを使用してい$img.show()ますが、JCropメソッドの呼び出しとの間に少し待たない限り、IE8では機能しないようです。これは、JCropがIE8でも機能する最小限の例ですが、16行目と18​​行目を削除するか、少なくとも250ミリ秒以内に何が発生する必要があるかを理解したいと思います。

 10       var $img = $('<img id="example" style="display:none;">');
 11 
 12       $("body").append($img);
 13 
 14       $img.on("load", function () {
 15           $img.show();
 16           setTimeout(function () {
 17               $("#example").Jcrop();
 18           }, 250);
 19       });
 20 
 21       $img.attr("src", "/assets/example.png");
4

1 に答える 1

3

スクリプト要素と同様に、IE8およびアンダーファイアのレガシーreadyStateChangeloadイベントは、イメージ更新の標準イベントではなくsrc、タイマーがイベントが認識されないという事実をマスクしています。解決策は、コールバックの前にコードをフォークすることです。

function imageSwap()
  {
  var $img = $('<img id="example" style="display:none;">');

  $("body").append($img);

  $img.attr("src", "/assets/example.png");

  if(!!document.addEventListener)
    {
    $img.on("load", loadTest)
    }

  else
    {
    $img.get(0).attachEvent("onreadystatechange", loadTest);
    } 

  function loadTest(event)
    {
    $img.show();
    $("#example").Jcrop();
    }
  }
于 2012-12-20T02:11:55.960 に答える