I need to get whole content of iframe from the same domain. Whole content means that I want everything starting from <html>
(including), not only <body>
content.
Content is modified after load, so I can't get it once again from server.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I belive I've found the best solution:
var document = iframeObject.contentDocument
var serializer = new XMLSerializer();
var content = serializer.serializeToString(document);
In content
we have full iframe content, including DOCTYPE
element, which was missing in previous solutions. And in addition this code is very short and clean.
回答2:
If it is on the same domain, you can just use
iframe.contentWindow.document.documentElement.innerHTML
to get the content of the iframe, except for the <html>
and </html>
tag, where
iframe = document.getElementById('iframeid');
回答3:
$('input.test').click(function(){
$('textarea.test').text($('iframe.test').contents());
});
回答4:
You can get the literal source of any file on the same domain with Ajax, which does not render the html first-
//
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);