0

我有一个包含在 javascript 字符串变量中的整个 html 文档,我需要将它呈现到我的页面的一部分中。我必须使用框架吗?怎么做?

4

3 回答 3

3

使用 iframe:

<iframe id="myiframe"></iframe>

var frame= document.getElementById('myiframe');
var doc= frame.contentDocument? frame.contentDocument : frame.contentWindow.document; // IE compatibility
doc.open('text/html');
doc.write(documenthtml);
doc.close();

或者,如果您可以切断您不想要的部分(如任何 DOCTYPE 和 <head> 元素),您可以将 innerHTML 写入任何元素。通常使用正则表达式或字符串处理来处理 [X][HT]ML 是一个非常糟糕的主意,但是如果您知道正文将始终包含在确切的字符串 '<body>...</body>' 中并且那里永远不会是例如。任何隐藏在注释或脚本部分中的“<body>”序列,您都可以摆脱它。

老实说,目前的浏览器非常宽容,它们通常甚至会让您将整个 HTML 文档写入 div 的 innerHTML,并在其中包含 doctype 和 '<head>'!但这有点淘气:

<div id="mycontent"></div>

document.getElementById('mycontent').innerHTML= htmldocument;

这是一个结合了这两种方法的讨厌的技巧,在不使用正则表达式的情况下提取正文内容:

<div id="mycontent"></div>

var frame= document.createElement('iframe');
frame.style.display= 'none';
document.body.appendChild(frame);
var doc= frame.contentDocument? frame.contentDocument : frame.contentWindow.document;
doc.open('text/html');
doc.write(documenthtml);
doc.close();
document.getElementById('mycontent').innerHTML= doc.body.innerHTML;
document.body.removeChild(frame);
于 2009-09-14T15:27:16.133 回答
0
document.getElementById('container').innerHTML = string;

这会将字符串的内容加载到 id 为“container”的元素(可能是 div)中。

于 2009-09-14T15:20:54.183 回答
0
myHtmlString = 'some stuff'; // whatever your big html string is
el = document.getElementById("myTarget"); // where you'd like the html to end up
el.innerHTML = myHtmlString; // set the HTML of el to be your big string.
于 2009-09-14T15:21:58.733 回答