2015-12-21 84 views
0

有誰能告訴我爲什麼這裏特別嗎?爲什麼innerHTML在<html>作爲內容時的行爲有所不同?

<html> 
    <head> 
     <script src="editor.js"></script> 
    </head> 
    <body> 
     <div id="scripts" class="scripts"> 
      Editor.Execute('<html>Html String</html>'); 
      Editor.Execute('<something>Html String</something>'); 
     </div> 
    </body> 
</html> 

document.getElementById("scripts").innerHTML顯示something然而html自敗。

Execute('Html String'); 
    Execute('<something>Html String</something>'); 

它在Firefox和Chrome中的表現方式相同。

+1

該聲明返回什麼(從innerHTML得到什麼結果)? – Jared

+0

所以它處理與HTML不同的東西? – Nishant

回答

4

您正在遇到this issue

基本上,瀏覽器在您的JavaScript甚至可以訪問該頁面之前清理掉HTML標籤 - 您可以檢查Chrome元素檢查器,您的<html>標記不存在。

我猜的答案取決於你想要做什麼,但如果你只是想輸出代碼到一個網頁,你可以逃脫字符:

<html> 
    <body> 
     <div id="scripts" class="scripts"> 
      Execute('&lt;html&gt;Html String&lt;/html&gt;'); 
      Execute('&lt;something&gt;Html String&lt;/something&gt;'); 
     </div> 
    </body> 
</html> 

然後​​將輸出:

Execute('&lt;html&gt;Html String&lt;/html&gt;'); 
Execute('&lt;something&gt;Html String&lt;/something&gt;'); 

然後,您可以替換JavaScript中的HTML實體。

+0

是的,我知道逃跑。但是,我只是好奇,看看爲什麼行爲有所不同。 也表現相同的方式。 – Nishant

0

不知道你做什麼,在Execute()這是很難說什麼是對那裏發生的。

以防萬一:HTML文檔可以有一個且只有一個<html>節點。

+0

我修改了代碼。它的HTML編輯器採用純HTML作爲輸入。所以我只是在頁面加載後執行它。我認爲HTML會進入另一個Iframe。 – Nishant

相關問題