Как получить весь контент iframe?

мне нужно получить все содержимое iframe из того же домена. Весь контент означает, что я хочу все, начиная с <html> (в том числе), не только <body> содержание. Содержимое изменяется после загрузки, поэтому я не могу получить его снова с сервера.

4 ответов


Я верю, что нашел лучшее решение:

var document = iframeObject.contentDocument
var serializer = new XMLSerializer();
var content = serializer.serializeToString(document);

на content у нас есть полный контент iframe, включая DOCTYPE элемент, который отсутствовал в предыдущих решениях. И вдобавок этот код очень короткий и чистый.


если он находится на том же домене, вы можете просто использовать

iframe.contentWindow.document.documentElement.innerHTML

чтобы получить содержимое iframe, за исключением <html> и </html> - тег, где

iframe = document.getElementById('iframeid');

$('input.test').click(function(){
    $('textarea.test').text($('iframe.test').contents());
});

вы можете получить литеральный источник любого файла в том же домене с Ajax, который не отображает html сначала-

//

function fetchSource(url, callback){

    try{
        var O= new XMLHttpRequest;
        O.open("GET", url, true);
        O.onreadystatechange= function(){
            if(O.readyState== 4 && O.status== 200){
                callback(O.responseText);
            }
        };
        O.send(null);
    }
    catch(er){}
    return url;
}
function printSourceCode(text){
    var el= document.createElement('textarea');
    el.cols= '80';
    el.rows= '20';
    el.value= text;
    document.body.appendChild(el);
    el.focus();
}

fetchSource (местоположение.href, printSourceCode);