0

我知道你可以用 jQuery 让 innerHTML 做这样的事情,

$('iframe').load(function(){
  alert($(this).contents().find('body').html());
});

这将获取 body 标记的 innerHTML。但我想要这一切。我想要 HTML 标签和文档类型。基本上整个源代码。我也希望能够将其作为一个整体进行编辑。“作为一个整体”,我的意思是我想做这样的事情,

$('iframe').html('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title>title</title>
</head>
<body>
hello world
</body>
</html>');

我该怎么做呢?

注意:我意识到 DOM 在不同浏览器中的处理方式不同,因此 Opera 的 innerHTML 看起来与 Firefox 的不同。但这没什么大不了的。

4

2 回答 2

0

我假设您正在访问的此文档在同一台服务器上?显然能够访问(和编辑!)另一个网站的内容将是非常危险的。

$('iframe').contentWindow.document.documentElement.outerHTML将包含完整的 html 标记及其内容。outerHTML不完全是跨浏览器的,您可能想要解析 documentElement 对象的属性。请注意,您无法编辑 outerHTML(至少在 WebKit 中),因此您可以使用 innerHTML 来编辑内容。

$('iframe').contentWindow.document.doctype表示文档类型。您无法获取实际标签,但可以从其属性中检索信息。是 !DOCTYPE 元素的 MSDN 参考。

于 2009-09-02T02:03:12.393 回答
0

document.write是你的朋友。

例如:

var iframeEl = document.createElement('iframe');
document.body.appendChild(iframeEl);

var oFrame = window.frames[window.frames.length - 1];
oFrame.document.write('<html><head><title>foo</title></head><body>bar</body></html>');

oFrame.document.body.innerHTML; // "bar"
于 2009-09-02T02:34:15.170 回答