2012-04-01 9 views
6

temel HTML ile boş bir iframe dolduruyorum kaybolur. Firefox'ta içeriğindeki içeriği çok kısa süre içinde görebiliyorum, ancak aniden yok oluyor. Firebug ile bu satırda bir kesme noktası belirledikten sonra çalışmaya devam ettiğinde içerik içeride kalır. Ama sonra satırda bir kırılma noktası belirlerse, o gider.

Bunu nasıl düzelteceğinize dair bir ipucu?

+0

Bu doğru keman mı? Bir iframe ile ilgisi olan bir şey görmüyorum. –

+0

Üzgünüz, bağlantıyı düzenledim. –

+0

Tamam, Chrome, Safari ve Firefox için aynı sonucu alıyorum. Mac’te Firefox 11 kullanıyorum. Başka bir şey olabilir mi? –

cevap

2

Tüm kodunuzu göremiyorum, ancak bana yaptığınız şekilde yaptığınız şeyle çalıştım. Senaryoya, HTML yükünün geri kalanını idam edilmeden önce bırakma şansı vermeme şansı var ve bu yüzden öngörülemeyen şeyler olabilir. Pencerenin yüklenmesini beklemediğimde, resmin görünmeyeceğini buldum. jQuery.html() verilen öğesinin içinde tüm HTML yerini alacağı

$(window).load(function() { 

    var html = "<img src='http://www.google.fr/logos/2011/Louis_Daguerre-2011-hp.jpg' alt='image' />"; 


    $("#myIframe").contents().find('body').html(html); 

}); 

Sadece unutmayın: Eğer aşağıda gibi yaptığı her şeyi örten, o zaman bir sorun olmamalıdır.

4

Dinamik olarak oluşturulan iframe'i doldurmaya çalışırken benzer sorunlarla karşılaştım. Iframe onload olayı kullanımı benim için durumu çözdü. Görüldüğü gibi, onload çözümü diğer tarayıcılarda FF'den, dolayısıyla korunmuş standart yoldan çalışmaz.

/** 
* Fills an iframe using data stored within textarea. Useful for creating email 
* template previews 
* 
* @param {String} inputSelector 
* @param {String} outputElemClasses 
* @return void 
*/ 
function displayEmail(inputSelector, outputElemClasses) 
{ 
    $(inputSelector).each(function(i) { 
     var templateData = $(this).text(); 
     var $iframe = $('<iframe></iframe>'); 
     $iframe.addClass(outputElemClasses); 
     $iframe.insertAfter(this); 
     // non-firefox 
     updateIframe($iframe, templateData); 
     // firefox 
     $iframe.load(function(e){ 
      updateIframe($iframe, templateData); 
     }) 
    }) 
} 


/** 
* Fills in target iframe using supplied data 
* 
* @param {Object} $iframe 
* @param {String} data 
* @return void 
*/ 
function updateIframe($iframe, data) 
{ 
    $iframe.contents().find('html').html(data); 
}    
İlgili konular