2012-08-29 64 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