Наборы фотографий в Tumblr подаются как iFrames.
Я хочу манипулировать этим iframe через jQuery, чтобы он выглядел так, как я хочу, что я могу сделать, но он не всегда заканчивает то, что делает.
Я думаю, это потому, что одновременно с загрузкой страницы происходит много вещей. Мне нужен способ проверить, что этот iFrame, который я не могу контролировать, загружается на 100%, прежде чем делать забавные вещи.
Существуют различные методы, предложенные в других вопросах по этому поводу, но я не думаю, что они подходят для этой ситуации. Вот один пример из вопроса переполнения стека "jQuery .ready в динамически вставляемом iframe"
function callIframe(url, callback) {
$(document.body).append('<IFRAME id="myId" ...>');
$('iframe#myId').attr('src', url);
$('iframe#myId').load(function()
{
callback(this);
});
}
Но это не имеет для меня никакого смысла, даже несмотря на то, что оно было отмечено и имело 100 голосов.
В этом «ответе» iframe добавляется функцией. Это для меня не динамически загружаемый iframe!
Вот мой код с «тупой» проверкой загрузки iframe. Код работает, но только иногда. Вы можете увидеть это в действии здесь http://syndex.me (третий пост - фотосет)
$(".post_relative").each(function () {
var post_relative = $(this);
var photoset = post_relative.find('.html_photoset');
if(photoset.length){
var myFrame = photoset.find("iframe");
myFrame.load(function(){
var newCover=myFrame.contents().find('.photoset').children(':first-child').children(':first-child').attr("href")+ '?'+(Math.random()*10000);
post_relative.append("<img src='"+ newCover +"' alt='Cover Page' />");
var psHeight = post_relative.find('img');
psHeight.load(function(){
if (psHeight.height()>heightRef){
psHeight.height(heightRef);
}
myFrame.hide();
})
})
}
});
Итак, вопрос: как выполнить скрипт, основанный на 100% загрузке и готовности iframe?