2014-01-25 2 views
0

Скажем, я создаю динамический IFrame так:Ожидания динамического плавающего фрейма, чтобы загрузить с помощью JQuery

$('body').prepend('<iframe id="e" src="/page.html"></iframe>'); 

Теперь я хочу, чтобы ждать этого плавающего фрейма окончания загрузки, так что я могу получить доступ к его источнику. я мог бы сделать это с помощью:

$('#e').load(function() {} 

Однако, если есть изображение или что-нибудь на «/page.html», который занимает много времени для загрузки, то я просто жду ничего, потому что все, что я Потребность - источник.

Так что мой вопрос, можно ли сделать что-то вроде этого, вместо:

while not exists ($("#e").contents().find('#someid')) { //wait } 

Так что это просто ждет, пока не существует «#someid» в нашем плавающем фрейме (это означает, по крайней мере, закончил загружен исходный код).

Возможно ли это?

+0

попытаться увидеть, если '$ («# х»). ready (функция() {} 'помогает. –

+0

Привет, спасибо, но он не будет работать с динамическим iFrame. –

ответ

1

В главном окне вы можете объявить функцию (позволяет сказать iframeReady):

function iframeReady() { 
    //your code 
} 

И поместите следующий код в конце body тега внутри фрейма:

Таким образом, вы можете получить доступ к родительское окно через parent объект

Таким образом, parent.window.iframeReady будет называться точно, когда body содержимое загружается и не будет ждать, пока все изображения будут загружены

РИСКОВАННЫХ: он будет работать только тогда, когда родительское окно и IFrame имеют один и тот же домен

+0

Привет, спасибо, но я не могу редактировать страницу iFrame заранее, так как контент меняется. –

+0

@ P.Henderson, если вы добавите 'parent.window.iframeReady();' до самого конца тега body, он будет выполняться, когда все содержимое, вероятно, будет загружено. Для этого вы можете вызвать 'iframeReady' в' setTimeout' (через 10 мс). Или вы можете использовать [DOMContentLoaded] (https://developer.mozilla.org/en-US/docs/Web/Reference/Events/DOMContentLoaded) внутри iframe, но он не будет работать в IE8 и старше – Curious

Смежные вопросы