2012-08-24 8 views
8

Amici, Il mio problema è che la mia pagina è molto lenta da caricare, perché tutto il carico simultaneamente. Sto tirando un feed RSS che se si fa clic sul pulsante "articolo" si aprirà un Modal che ha l'interno di esso. Il problema è che tutto il carico è simultaneamente.Come faccio a caricare <iframes> solo con un clic del mouse?

Ecco il sito: http://daisy.camorada.com/

ho provato l'inserimento di uno src in, ma che non funziona, perché credo che i carichi iframe quando la pagina si apre.

<button class='btn btn-primary' id='miguel'>TEST ME NOW</button> 
     <button class='btn btn-primary' id='jamison'>jamison</button> 
     <div id="yoyoyo"> 
      </div> 
      <iframe id="gogo"> 
       </iframe> 

<script> 
     $('#miguel').on('click', function() { 
      alert('clicked');   
      $('#gogogo').attr('href', 'http://www.google.com'); 

     }); 
    </script> 
    <script> 
     $('#jamison').on('click', function() { 
      alert('clicked JAMISON');  
      $("#yoyoyo").html("<h1>HELLO J</h1><br><iframe class='full-iframe' href='http://news.yahoo.com/three-killed-tribal-clash-libya-001717827.html'></iframe>"); 

     }); 

    </script> 

risposta

26

Html:

<iframe id="myiFrame" data-src="http://my.url" src="about:blank"> 
</iframe> 

Nel vostro jQuery:

$("button").click(function(){ 
    var iframe = $("#myiFrame"); 
    iframe.attr("src", iframe.data("src")); 
}); 

O se si voleva caricare tutti iframe quando si fa clic un pulsante ... assicurarsi che tutti hanno un data-src="your.url" attributo e quindi eseguire il ciclo in questo modo:

$("button").click(function(){ 
    $("iframe").each(function(){ 
     $(this).attr("src", $(this).data("src")); 
    }); 
}); 
+0

Grazie Ahren. Ho ricreato il tuo codice su daisy.camorada.com/test.php, sfortunatamente non sta funzionando correttamente. Idee? –

+1

@AlexSpencer - Il codice è perfetto - l'unica cosa è che Google non si lascia incorporare in un iframe! Prova un altro sito! (ad esempio, yahoo.com) – ahren

+0

@ ahren come faccio a risolverlo se c'è più di un iframe ma deve essere attivato separatamente. due pulsanti diversi e due diversi iframe. – Lemdor

6

Innanzitutto, non si dispone di un elemento $('#gogogo'). Il frame è #gogo.

In secondo luogo, impostare è src non href

$("#myframe").attr('src', 'http://site.com'); 

Se si desidera solo per impostarlo su un certo HTML e non un URL, utilizzare questo:

$("#myframe").contents().find('html').html("hello"); 

Here's a demo

+0

sachleen, ho provato il tuo metodo qui: http://daisy.camorada.com/test2.php senza alcun risultato. Sei sicuro di poter modificare dinamicamente lo src di un iframe e caricherà lo