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