我试图弄清楚如何从与其嵌入的页面相同的原始域中检索完整的(这意味着所有数据)HTML页面源。我想要任何给定时间的确切源代码,由于 Javascript 或 php 生成html 输出,这可能是动态的。这意味着 AJAX 调用对我不起作用,因为该页面可能已通过 Javascript 修改或根据请求时间或在 php 中唯一生成。我无法从我的.<iframe>
src
<iframe>
$.get()
mt_rand()
<!DOCTYPE>
<iframe>
我一直在尝试和搜索 Stack Overflow,但还没有找到一个解决方案来检索包括声明在内的所有页面源。<!DOCTYPE>
How do I get the entire page's HTML with jQuery?中的答案之一?建议为了检索<!DOCTYPE>
信息,您需要手动构造此声明,方法是检索<iframe>
'document.doctype
属性,然后<!DOCTYPE>
自己将所有属性添加到声明中。这真的是从<iframe>
的 HTML 页面源中检索此信息的唯一方法吗?
以下是我浏览过的一些值得注意的 Stack Overflow 帖子,这些帖子与以下内容不重复:
- Javascript:获取当前页面当前源
- 获取选定元素的外部 HTML
- https://stackoverflow.com/questions/4612143/how-to-get-page-source-using-jquery
- 如何使用 jQuery 获取整个页面的 HTML?
- Jquery:获取页面的所有html源,但不包括一些#ids
- jQuery:获取包含选择器的 HTML?
这是我的一些本地测试代码,说明了我迄今为止的最佳尝试,它只检索包含<iframe>
'<html>
标记的数据:
main.html
<html>
<head>
<title>Testing with iframe</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function test() {
var doc = document.getElementById('iframe-source').contentWindow.document;
var html = $('html', doc).clone().wrap('<p>').parent().html();
$('#output').val(html);
}
</script>
</head>
<body>
<textarea id="output"></textarea>
<iframe id="iframe-source" src="iframe.html" onload="javascript:test()"></iframe>
</body>
</html>
iframe.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html class="html-tag-class">
<head class="head-tag-class">
<title>iframe Testing</title>
</head>
<body class="body-tag-class">
<h2>Testing header tag</h2>
<p>This is <strong>very</strong> exciting</p>
</body>
</html>
以下是这些文件在 Google Chrome 版本 27.0.1453.110 m 中一起运行
的屏幕截图:
概括
如您所见,谷歌浏览器Inspect element
显示声明中存在,<iframe>
那么<!DOCTYPE>
如何使用页面源检索这些数据?此问题也适用于标签中未包含的任何其他声明或其他<html>
标签。
任何有关通过 Javascript 检索此完整页面源代码的帮助或建议将不胜感激。