Я пытаюсь проанализировать HTML-код веб-страницы в DOM, загрузив его в iframe и затем выполнить поиск в DOM. Вот код
function f(callback) {
var tmp = document.createElement('iframe');
$(tmp).hide();
$(tmp).insertAfter($('foo'));
$(tmp).attr('src', url);
$(tmp).load(function() {
var bdy = tmp.contentDocument.body;
callback(bdy);
$(tmp).remove();
});
}
В функции обратного вызова, если я делаю что-то вроде следующего
function callback(bdy) {
alert($(bdy).find('bar').length);
}
иногда это дает мне правильное значение, но иногда дает 0. Однако, если я сделаю следующее, это сработает
var tmp = document.createElement('iframe');
$(tmp).hide();
$(tmp).insertAfter($('foo'));
$(tmp).attr('src', url);
$(tmp).load(function(tmp) {
setTimeout(function() {
var bdy = tmp.contentDocument.body;
callback(bdy);
$(tmp).remove();
}, '100');
});
Поскольку setTimeout () зависит от конца клиента, я хотел бы знать, есть ли лучший способ достичь той же цели. Благодаря.