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