如何获得iframe的全部内容?

时间:2011-01-01 18:47:23

标签: javascript jquery iframe

我需要从同一个域获取iframe的全部内容。整个内容意味着我希望所有内容都从<html>(包括)开始,而不仅仅是<body>内容。 内容在加载后被修改,因此我无法再从服务器获取它。

4 个答案:

答案 0 :(得分:16)

我相信我找到了最好的解决方案:

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

content中,我们有完整的iframe内容,包括DOCTYPE元素,这在之前的解决方案中是遗漏的。此外,这段代码非常简洁。

答案 1 :(得分:7)

如果它位于同一个域中,您只需使用

即可
iframe.contentWindow.document.documentElement.innerHTML

获取iframe的内容,<html></html>标记除外,其中

iframe = document.getElementById('iframeid');

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以使用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);