我将图像添加到页面上,然后在其上使用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");

最佳答案

script element一样,IE8和火灾下的传统readyStateChange事件而不是图像load更新的标准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();
    }
  }

关于jquery - Jcrop和IE以及动态添加图像的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13699178/

10-11 14:22