2009-10-19 5 views
8

Я знаю, что есть некоторые инструменты и методы для задержки загрузки javascript, но у меня есть iframe, который я хотел бы отложить загрузку до тех пор, пока остальная часть страницы не закончит загрузку и рендеринг (iframe находится в скрытом, что будет не обнаруживается, пока кто-то не нажимает на определенную вкладку на странице. Есть ли способ отложить загрузку iframe? Любые предложения были бы очень благодарны. Спасибо!Задержка загрузки iframe?

ответ

6

с JQuery легко!

либо заключите код, который загружает I рамку в пределах $() или используйте $(document).ready(function(){}) , оба они одинаковы и будут выполнять ваш код после готовности DOM!

например.

$(document).ready(function(){ 
    $('iframe#iframe_id').attr('src', 'iframe_url');  
}); 

больше на http://www.learningjquery.com/2006/09/introducing-document-ready

+0

Оказывается, ваша первая линия все решает. Я использовал ужасный шаблон для вкладок, которые я загрузил с произвольного веб-сайта, и мне понравилось отображать мой скрытый iframe перед всем, пока он полностью не загружен. Когда я переключился на использование вкладок jquery (которые выглядели намного приятнее для загрузки!), Рендеринг iframe больше не был проблемой. jQuery ROCKS! Спасибо :) – Sean

+0

В IE это может сломать кнопку «Назад», потому что она добавляет новый источник iframe в историю браузера. – Sjoerd

+5

Число людей, отвечающих в jQuery, когда их спрашивают по Javascript, страшно в эти дни. –

4

Используйте Javascript в событии onLoad или в кнопке нажмите обработчик, чтобы установить атрибут ГКЗ фрейма.

0

Или мое любимого использование

setTimeout('your app', 6000) 

Это заставит его ждать й количества миллисекунд, чтобы вызвать любую функцию ....

+5

Что именно будет «ваше приложение» в вашем примере? – fresskoma

8

не знают, если нужно бежать без javascript. Но лучший Methode это Меняются СРК прямой после фрейма:

<iframe id="myIframe" src="http://.." /> 
<script type="text/javascript"> 
    var iframe = document.getElementById('myIframe'),src = iframe.src; 
    iframe.src = ''; 
    document.onload = function(){iframe.src = src;} 
</script> 

Использование $ (документ) .ready начнет визуализацию вашего Iframe прямой после DOM Дерево строится, но прежде всего от содержания в ваша сторона загружена, поэтому я думаю, что это не то, что вы хотите.

JQuery имеет .load событие, которое так же, как OnLoad (после того, как будут загружены все ресурсы)

$(window).load(function(){ iframe.src = src; } 
+0

Hey Eskimo- Я предполагаю, что ваш ответ будет работать, хотя я не смог заставить его работать (я уверен, что это было из-за проблемы с моей стороны) :) У меня недостаточно репутации, чтобы проголосовать за вас но спасибо за предложение! – Sean

1

Вы также можете применить дисплей: не имеет к IFRAME с помощью CSS, а затем использовать .Show Jquery как это :

$(document).ready(function(){ 
    $('iframe.class_goes_here').show(); 
}); 
+6

iframe будет загружаться, даже если в поддереве 'display: none' dom - он просто не будет отображаться. –

1

Это работает для меня, но есть проблемы, если вы измените код на всех:

function loadIFrame() { 
    window.frames['BodyFrame'].document.location.href = "iframe.html"; 
}   
function delayedLoad() { 
    window.setTimeout(loadIFrame2, 5000); 
} 

Использование:

<iframe src="" onLoad="delayedLoad()"></iframe> 
1

Вы можете использовать атрибут Defer когда нужно загрузить последний после CSS, JS и т.д.:

iframe defer src="//player.vimeo.com/video/89455262" 
+0

это не работает –

0

Загрузка плавающего фрейма после загрузки страницы С JQuery и немного HTML и JS

// Javascript 
 
$(window).bind("load", function() { 
 
    $('#dna_video').prepend('<iframe src="//player.vimeo.com/video/86554151" width="680" height="383" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'); 
 
});
<!-- Append JQuery--> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<!-- HTML --> 
 
<div id="dna_video"></div>

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