2012-08-29 34 views
1

我想将HTML代码嵌入html页面。来自HTML嵌入代码的样式令人不安,因此我想要使用iframe。问题是没有.html页面要链接到,因为这个HTML代码正在从数据库来。我试过类似的东西:iframe直接使用html代码,没有源代码

<iframe>${htmlContent} </iframe> 

其中${htmlContent}包含一个简单的html内容。

<html> 
<head> 
<title></title> 
</head> 
<body> 
</body> 
</html> 
+0

你可以有第二个pag e从数据库中生成HTML,并通过'iframe'的'src'链接到它? – freefaller

+0

这将是简单的方法,但不是最好的。我宁愿直接使用HTML代码。谢谢 –

+0

存储的HTML **是否包含''标签? – freefaller

回答

1

这个答案假设你能够从你的存储HTML去掉了<html></html>标签,并放置到您的标记时能够HtmlEncode它。

存储编码的HTML变得像一个div ...

<div id="htmlstore" style="display:none;">{html goes here}</div> 

因此,它看起来像...

<div id="htmlstore" style="display:none;">&lt;body&gt;This is my text&lt;/body&gt;</div> 

然后使用以下Javsacript,从而将 “HtmlDecode”(不幸的是,没有原生的javascript函数)然后放入iframe中

<script type="text/javascript"> 
    window.onload = function(){ 
    var html = document.getElementById("htmlstore").innerHTML; 
    html = html.replace(/&lt;/g,"<").replace(/&gt;/g,">"); 
    var frameDoc = document.getElementById("newframe").contentWindow.document; 
    frameDoc.documentElement.innerHTML = html; 
    } 
</script> 
+0

谢谢。那是我需要的。但我有两个问题:1.通过更改<<和> >,我们避免了即使在展示之下:没有总体布局受到干扰,是吗? 2.为什么要去掉标签?即使有了它们,功能也能正常工作。谢谢 –

+1

Hi @Blanca。是的,HTML的编码能够阻止主页面内发生的任何事情,因为如果你不能保证HTML的内容,它可能很容易搞砸了。删除“”的原因是因为我无法找到用新的HTML替换iframe中的整个结构的方法。我做这件事的方法是在** iframe的HTML中替换结构**,否则浏览器可能会抱怨' ...'如果这是有道理的。 – freefaller

+1

还有一些我想到的@Blanca,在这之后你可能不想在HTML上运行一个实际的'HtmlEncode',否则像'&'这样的东西就会在iframe中出现,如'& amp; '。所以你可能只想单独转换'<' and '>'。无论是或使用一个JavaScript库,做适当的HtmlDecoding,这jQuery将允许你做明显 – freefaller