2014-09-05 22 views
0

在我的項目中,我使用了Ace Editor和一個iframe。 Ace編輯器包含來自iframe的源代碼。在Ace編輯器中輸出iframe源代碼中不需要的空間

當網頁加載時,源代碼在Ace Editor中加載。我使用此代碼加載從iframe中的王牌編輯器的源代碼:

function getCode() 
{ 
var code = "<!DOCTYPE html>" + "\n" + document.getElementById("iframe_id").contentWindow.document.documentElement.outerHTML; 
editor.getSession().setValue(code); 
} 

我要輸出「< DOCTYPE HTML >!」手動因爲

document.getElementById("iframe_id").contentWindow.document.documentElement.outerHTML 

不輸出DOCTYPE 。

加載網頁時,王牌編輯器加載的iframe代碼:

<body onLoad="getCode()"> 

但在王牌編輯iframe的源代碼如下所示:

<!DOCTYPE html> 
<html><head> 
<title>Learning HTML</title> 
</head> 
<body> 
<h1>Welcome</h1> 
<p>This is your first webpage.</p> 



</body></html> 

但我想要的代碼要這樣正確排列:

<!DOCTYPE html> 
<html> 
<head> 
<title>Learning HTML</title> 
</head> 
<body> 
<h1>Welcome</h1> 
<p>This is your first webpage.</p> 
</body> 
</html> 

我不知道問題出在哪裏。請幫忙。

UPDATE: - 當我右鍵單擊並查看iframe的來源時,代碼與Ace編輯器中顯示的代碼相同。

+0

你爲什麼使用iframe來獲取代碼? outerHTML不保證與頁面中的html相同。另外請注意,這個問題與ace沒有任何關係,並且在純文本文件中也會出現這種情況。 – 2014-09-05 10:03:23

+0

是的。但正如我已經使用王牌,所以我已經提到它。實際上,該項目是一個HTML編輯器,iframe用作實時查看器。 – hmc 2014-09-05 10:07:45

回答

1

如果你想達到這個目標,你必須在通過HTML美化程序(如js-beautify)將代碼展示給Ace之前將其拋出。 Ace本身沒有選擇。請參閱this question