2016-09-05 2 views
1

Я получаю от сервера полного HTML кода различных страниц в виде строки:Установить динамический контент IFrame

$.post($form.attr("action"), $form.serialize(), function(responseText) { 
     console.log("text received"); 

     //Setting dynamic content to iframe method * 

    }).error(function(p1, p2, p3){ 
     alert("error!"); 
     console.log(p1 + p2 + p3); 
    }) 

;

Настройка динамического контента для метода IFrame 1:

var s = $(responseText); 
$('#FileFrame').contents().find('html').html(s); 

Настройка динамического содержимого метода IFrame 2:

var $frame = $('#FileFrame'); 
    var doc = $frame[0].contentWindow.document; 
    var $body = $('body',doc); 
    $body.html(responseText); 

Настройка динамического содержимого метода IFrame 3:

var iframe = document.getElementById('FileFrame'); 
    var iframedoc = iframe.document; 
    if (iframe.contentDocument) 
    {  iframedoc = iframe.contentDocument; 
    console.log("iframe has contentDocument"); 
    } 
    else if (iframe.contentWindow) 
    { 
    iframedoc = iframe.contentWindow.document; 
    console.log("iframe has contentWindow.document"); 
    } 
    if (iframedoc) { 
    //iframedoc.open(); 
    iframedoc.write(responseText); 
    iframedoc.close(); 
    console.log("iframedoc is not NULL"); 
    } else { 
    alert('Cannot inject dynamic contents into iframe.'); 
    } 

проблема в том, что некоторые страницы хорошо отображают метод 1, некоторые с методом 2 и некоторые со мной thod 3, но любой из них не подходит ко всем веб-страницам. Пожалуйста, помогите

+0

Я думаю, что этот пример будет делать работу [example1] (http://stackoverflow.com/a/620905) Попробуйте выполнить uncoment //iframedoc.open(); в третьем методе. Кажется, что третий метод является оптимальным –

ответ

0

Попробуйте изменить свой третий способ, как это:

var iframe = document.getElementById('FileFrame'); 
var iframeDoc; 
if(iframe.contentWindow){ 
    iframeDoc = iframe.contentWindow; 
} 
else if(iframe.contentDocument.document){ 
    iframeDoc = iframe.contentDocument.document; 
} 
else if (iframe.contentDocument) { 
    iframeDoc = iframe.contentDocument; 
} 
else{ 
    alert('Cannot inject dynamic contents into iframe.'); 
    return; 
} 
iframeDoc.document.open(); 
iframeDoc.document.write(responseText); 
iframeDoc.document.close(); 
+0

Результат - это то же, что некоторые страницы работают, а некоторые нет – Geha

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