2012-12-07 6 views
5

UI-Experten, Ich versuche, eine langsame Website in einem iframe in einem jquery modalen Dialog zu laden, aber ich habe Probleme. Das ist mein Anwendungsfall:Eine Ladeanimation für einen Iframe in einem modalen Dialogfeld der jQuery-Benutzeroberfläche anzeigen

  1. ein jquery Dialog zu öffnen, mit einem einzigen "loading ..." gif
  2. Last eine andere URL im Hintergrund
  3. einmal geladen, ersetzen Sie die gif mit der URL

ich bin in der Lage, die URL mit dem Code direkt zu öffnen, wie unten:

var popup = $('<div id="popup123" class="dialog"></div>').prependTo('body'); 
    popup.prepend('<iframe style="display:none" class="dialogIFrame"></iframe>'); 
    $('.dialogIFrame').attr("src", 'http://myslowsite'); 
    $('.dialogIFrame').show(); 
    popup.dialog({ 
     modal: true, 
     title: 'Site', 
     width: 1000, 
     height: 500, 
    }); 

Also meine Frage ist - wie kann ich ein hinzufügen „loading ...“ g wenn zur Mischung? Sollte möglich sein - aber ich kann nicht scheinen, herauszufinden!

Vielen Dank im Voraus! Hier

Antwort

6

dies sehen. Hoffe es hilft .. http://jsfiddle.net/CEJhb/1/

var popup = $('<div id="popup123" class="dialog"><img id="load" src="http://jsfiddle.net/img/logo.png" alt="loading..."/></div>').prependTo('body'); 

popup.prepend('<iframe style="display:none" class="dialogIFrame"></iframe>'); 
var $iFrame = $('iframe'); 

$iFrame.load(function() { 
$('.dialogIFrame').show(); 
$('#load').hide(); 
}); 

$('.dialogIFrame').attr("src", 'http://www.google.com'); 

popup.dialog({ 
modal: true, 
title: 'Site', 
width: 1000, 
height: 500 
});​ 
+0

Dies ist viel näher an dem, was ich will. Ich versuche das. – ragebiswas

+0

Danke AV. Das erreicht, was ich will - ordentlicher Trick! – ragebiswas

+0

Glücklich, um hilfreich zu sein ... :) – Anujith

7

ist ein Beispiel für einen Iframe zu schaffen, ist es auf eine Website zu leiten und einen Rückruf durchzuführen, wenn es fertig geladen: http://jsfiddle.net/74nhr/109/

$(document).ready(function() { 
    var status = $('#status'); 
    var iframe = $('iframe'); 

    status.val('Loading...'); // show wait 

    iframe.on('load', function() { 
     status.val('Done!'); // remove wait, done! 
    }); 

    setTimeout(function() { 
     iframe.attr('src', 'http://www.archive.org'); 
    }, 
    1000); 
}); 
​ 
+0

Danke Cymen. Ich bezweifle, dass das funktioniert - da der Iframe immer noch angezeigt wird: keine - und ich mache eine .show nach der .attr ('src') - 3. Zeile. Ich habe es versucht, und es zeigt nicht das Laden gif. Vielleicht kann jemand kompletten Code posten? Ich gebe zu, ich bin neu in jQuery UI. – ragebiswas

+0

Ah, ich habe es falsch verstanden. Ich werde aktualisieren. – Cymen

+0

Sie könnten natürlich nur den iframe mit dem Laden von HTML anzeigen. Vielleicht möchten Sie eine andere Funktionalität? Wie auch immer, ich habe die Antwort aktualisiert. – Cymen

Verwandte Themen