Мне трудно это понять, и мне не нравится «решение», поскольку оно действительно не должно решить мою проблему.
У меня есть функция, которая 40% времени не следует полностью, хотя. Сначала я подумал, что это из-за того, что я управлял элементами img и iframe на лету, однако я сделал разные вещи, чтобы убедиться, что кэш и загрузка отсортированы, прежде чем они сделают свое дело.
В частности, то, что я делал с переменной newCover
, выполнялось само по себе только в 60% случаев. В моем разочаровании я утешил консоль newCover
прямо в конце функции, чтобы попытаться понять, почему она просто иногда не появляется.
Но как ни странно, потому что я записываю переменную в консоль, я получаю 100% -ную вероятность успеха, когда функция делает то, что должна.
Почему это?!
Вы можете увидеть, как он работает над третьим постом здесь: http://syndex.me
Вот код:
albumCover = function(){
$(".forPhotoset").each(function () {
var forPhotoset = $(this);
var myFrame = forPhotoset.find("iframe");
myFrame.hide();
myFrame.load(function(){
var newCover = myFrame.contents().find('.photoset').children(':first-child').children(':first-child');
newCover.children(':first-child').remove();
var psPre = newCover.attr("href")+ '?' + (Math.random() * 1);
newCover.append("<img src='"+ psPre +"' alt='Cover Page' />");
var psHeight = newCover.find('img');
psHeight.load(function(){
if (psHeight.height()>heightRef){
psHeight.height(heightRef);
}
})
newCover.detach();
forPhotoset.append(newCover); //only executes 60% of the time
console.log(newCover);//i added this, now i get 100% success rate?!
})
});
}