2016-01-05 4 views
1

У меня есть куча вкладок, на каждой вкладке у меня есть iframe, который я хочу загрузить, только когда я нажимаю вкладку. Я не хочу, чтобы все приложения загружались после загрузки страницы. Как это можно сделать?Загрузить фреймы на вкладке

Я новичок в JSP и Javascript ..

<ul class="nav nav-tabs"> 
     <li class="active"><a data-toggle="tab" href="#home">Home</a></li> 
     <li><a data-toggle="tab" href="#menu1">First Menu</a></li> 
     <li><a data-toggle="tab" href="#menu2">Second Menu</a></li> 
    </ul> 


    <div class="tab-content"> 

     <div id="home" class="tab-pane fade in active"> 
      <iframe id="iframe1" src=""></iframe> 
     </div> 

     <div id="menu1" class="tab-pane fade"> 
      <iframe id="iframe2" src=""></iframe> 
     </div> 

     <div id="menu2" class="tab-pane fade"> 
      <iframe id="iframe2" src=""></iframe> 
     </div> 

    </div> 
+2

Не используйте iframe. Используйте [AJAX] (https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started). [Почему?] (Http://stackoverflow.com/questions/10656992/why-ajax-over-iframes) – PDKnight

+0

@PDKnight Вы должны сказать ему, почему – l2aelba

+0

@ l2aelba done: P – PDKnight

ответ

2

Ajax лучше!

Как следует из @PDKnight, вы должны использовать ajax, и в конце этого решение вы увидите, почему.

Вот рабочая скрипка для вас (код jQuery).

jQuery(document).ready(function($) { 
 
    $('.nav-tabs > li > a').on('click', function(event) { 
 
    //avoid <a> tag to load his href 
 
    event.preventDefault(); 
 
    //getting the main subjects 
 
    var id_of_selected = $(this).attr('load-in'); 
 
    var link_to_load = $(this).attr('href'); 
 
    var iframe_to_load = $(document).find('#' + id_of_selected); 
 
    console.log(iframe_to_load); 
 
    //make the magic 
 
    if (iframe_to_load.length) { 
 
     iframe_to_load.attr('src', link_to_load); //this fires the link to destinated iframe 
 
     iframe_to_load.parent().addClass('active'); //this make the parent div container of iframe visible 
 
    } 
 

 
    }); 
 
});
.tab-pane { 
 
    display: none; 
 
} 
 
.active { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="nav nav-tabs"> 
 
    <li class="active"><a data-toggle="tab" href="https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d11173.933562701173!2d12.2363393!3d45.560717000000004!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sit!2sit!4v1452004351715" load-in="iframe1">WORKING!</a> 
 
    </li> 
 
    <li><a data-toggle="tab" href="http://www.youtube.com" load-in="iframe2">First Menu</a> 
 
    </li> 
 
    <li><a data-toggle="tab" href="http://www.facebook.com" load-in="iframe3">Second Menu</a> 
 
    </li> 
 
</ul> 
 
<div class="tab-content"> 
 

 
    <div id="home" class="tab-pane fade in"> 
 
    <iframe width="200" height="200" style="width:200px;height:200px;" id="iframe1" src=""></iframe> 
 
    </div> 
 

 
    <div id="menu1" class="tab-pane fade"> 
 
    <iframe id="iframe2" src=""></iframe> 
 
    </div> 
 

 
    <div id="menu2" class="tab-pane fade"> 
 
    <iframe id="iframe3" src=""></iframe> 
 
    </div> 
 

 
</div>

Вы увидите (в консоли при нажатии "First Menu" или "Secon меню"), что вы не можете загружать ссылки, которые не позволяют X-ORIGINread more here). Но вы можете загрузить в iframes только первую вкладку (рабочий), потому что карты google позволяют X-ORIGIN встраивать.

Пожалуйста, обратите внимание, если вы работаете с u;)

+1

Я беседую с ним, и он объяснил, что использует Kibana, который генерирует iframe, так что, к сожалению, это невозможно сделать с AJAX :( – PDKnight

+1

damn! XD Whell iframe - последнее решение:/ –

+1

..здесь вы идете;) – PDKnight

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