2012-07-28 51 views
0

我的頭一節是這樣的:的Chrome/Firefox的錯誤與頭部分我的自定義標籤 - 不是IE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html lang="es" xml:lang="es"> 
<head> 
    <title>Hi!</title> 
    <mycustomtag att="1"></mycustomtag> 
    <script>...</script> 
    <!--anything else--> 
</head> 
<body> 
</body> 
</html> 

中的Chrome/Firefox的問題是MyCustomTag出現在主體部分和SCRIPT標籤也。我不知道爲什麼會出現:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html lang="es" xml:lang="es"> 
<head> 
    <title>Hi!</title> 
</head> 
<body> 
    <mycustomtag att="1"></mycustomtag> 
    <script>...</script> 
    <!--anything else--> 
</body> 
</html> 
+0

請,我需要幫助。 – 2012-07-28 19:03:01

+0

我使用chrome或firefox看不到身體部分上的任何標籤,我甚至使用小提琴來檢查..一切正常 – 2012-07-28 19:43:19

+0

在Chrome中,請使用Ctrl + Shit + J或在FF中使用Firebug在dinamic HTML解析器中查看此內容。這種行爲在視圖源中看不到。 – 2012-07-28 19:51:03

回答

0

解決這個問題的唯一辦法是管理呈現HTML和添加自定義標記,開始身體和結束body標籤。這種方式可以刪除瀏覽器注入的所有標籤。 Chrome插入標籤在身體的盡頭也是:s令人難以置信!結束標籤是! 謝謝! -

0

添加

<style> 
mycustomtag { display: none; } 
</style> 

的Chrome瀏覽器的行爲是一種功能,而不是一個錯誤。當你使用一個發明的標籤時,你偏離了HTML規範,並且瀏覽器可以做他們想做的任何事情。 (您也有一個不合格的文檔類型,這會在某些瀏覽器中觸發怪癖模式。)

+0

謝謝Jukka,但這不能解決我的問題。我需要這個標籤不出現在正文部分。當我呼叫body.outerHTML時,會出現此錯誤,並且服務器端的進程失敗。 – 2012-07-28 19:16:09

+0

您是否需要在HTML中使用「自定義」標籤?他們造成這樣的問題。顯然,Chrome HTML解析器將''標籤視爲隱式關閉頭部元素並打開'body'元素,因爲它不是頭部內允許的幾個標籤之一。 – 2012-07-28 19:19:36

+0

問題是標籤是一個ASP.Net控件與runat =「服務器」,這包括功能和樣式表。在一個調用ASP.Net渲染的應用程序中,像這樣的控件爲什麼稍後需要它。 – 2012-07-28 19:25:28

0

要處理DOM中的元素位於body而不是head的問題(正好與需要隱藏元素相反),由元素從body移動(如果有),以head操作DOM:

<script> 
var myElement = document.getElementsByTagName('mycustomtag')[0]; 
if(myElement.parentNode === document.body) { 
    document.body.removeChild(myElement); 
    document.head.appendChild(myElement); 
} 
</script> 
+0

謝謝Jukka,但我沒有辦法識別低於此自定義標籤移動的標籤。 – 2012-07-28 19:40:08

+0

我不明白這怎麼重要。移動這個元素是不夠的嗎?建議的代碼將它放在'head'的末尾,但是它放置在'head'內並不重要。 – 2012-07-28 20:11:16

+0

解決此問題的唯一方法是管理html呈現,並添加自定義標記以開始body和end body標記。這種方式可以刪除瀏覽器注入的所有標籤。謝謝! – 2012-07-28 20:41:23