Запретить загрузку содержимого скрытого iframe

У меня есть много скрытых тегов <div>, с (display: none), которые я вызываю, когда хочу загрузить модаж jQuery. Каждый из этих тегов <div> содержит <iframe>, который вызывает другую страницу.

Чтобы не загружать мою страницу медленно, мне интересно, есть ли способ предотвратить загрузку страницы <iframe>, пока я не назову <div> в модальном?

Ответ 1

Вы можете загрузить iframes после визуализации html, предоставив пустой src в html iframe и позже назначив src jquery/javascript.

HTML

<iframe id="iframe1" ></iframe>

Javascript, iframe может быть загружен при некоторых действиях, таких как кнопка

document.getElementById('iframe1').src="/default.aspx";

Как kern3l, мы можем добавить атрибут данных в iframe для хранения src вместо жесткого кодирования.

HTML

<iframe id="iframe1" data-frameSrc="/default.aspx"></iframe>

Javascript

ifrmame1 = $('#iframe1')
ifrmam1.src = ifrmam1.data("frameSrc");

Вы также можете создать новый фрейм в jquery и назначить src, это загрузит страницу с пустым кадром.

$('<iframe>', {
   src: '/default.aspx',
   id:  'myFrame',
   frameborder: 0,
   scrolling: 'no'
   }).appendTo('#parentDivId'); 

ИЛИ

var iframe = document.createElement('iframe');
iframe.frameBorder=0;
iframe.width="300px";
iframe.height="250px";
iframe.id="myFrame";
iframe.setAttribute("src", '/default.aspx');
document.getElementById("parentDivId").appendChild(iframe);

Ответ 2

Просто используйте один iframe:

<iframe id='page' src=''></iframe>

то assign src на each click button/link:

предположим, что это html:

<ul>
  <li><a href='myfolder/myPage1.html'>Page 1</a></li>
  <li><a href='myfolder/myPage2.html'>Page 2</a></li>
</ul>

, затем jquery:

$('ul li a').click(function(e){
   e.preventDefault();
   $('#page').attr('src', $(this).attr('href'));
});