Как получить ВСЕ содержание iframe? - PullRequest
6 голосов
/ 01 января 2011

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

Ответы [ 4 ]

16 голосов
/ 02 января 2011

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

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

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

7 голосов
/ 01 января 2011

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

iframe.contentWindow.document.documentElement.innerHTML

для получения содержимого iframe, кроме тегов <html> и </html>, где

iframe = document.getElementById('iframeid');
1 голос
/ 01 января 2011
$('input.test').click(function(){
    $('textarea.test').text($('iframe.test').contents());
});
0 голосов
/ 01 января 2011

Вы можете получить буквальный источник любого файла в том же домене с помощью 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 (location.href, printSourceCode);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...