簡體   English   中英

當javascript創建對象(例如img標簽)時,它沒有結束標記。 如何使W3C有效?

[英]When objects (e.g. img tag) is created by javascript, it doesn't have the closing tag. How do I make it W3C valid?

圖像標記( <img src="" alt="" /> ),換行符標記( <br /> )或水平規則標記( <hr /> )在末尾有斜杠以表示自身為自閉標簽。 但是,當這些對象是由javascript創建的,並且我查看了源代碼時,它們沒有斜杠,使它們因W3C標准而無效。

我怎么能克服這個問題?

(我使用javascript原型庫)

你是如何看待“來源”的? JavaScript創建的元素不會出現在“查看源代碼”中。 你在談論innerHTML嗎?

如果是這樣,那么您將獲得的是Web瀏覽器對文檔中DOM節點的序列化。 在瀏覽器中,頁面的HTML標記不是文檔狀態的最終存儲。 該文檔存儲為Node對象的加載; 當這些對象被序列化回標記時,該標記可能看起來不像解析為獲取文檔的原始HTML頁面標記。

所以無論哪個:

<img src="x" alt="y"/>
<img src="x" alt="y">
<img  alt = "y"    src="x">
img= document.createElement('img'); img.src= 'x'; img.alt= 'y';

您用來創建HTMLImageElement節點,當您使用innerHTML對其進行序列化時,瀏覽器通常會生成相同的HTML標記。

如果瀏覽器處於本機XML模式(即因為頁面作為application/xhtml+html ),那么innerHTML值肯定會包含自動關閉語法,如<img/> (在某些瀏覽器中,您也可能會看到其他XML內容,如命名空間。)

但是,如果您今天更有可能在媒體類型text/html下提供“HTML兼容的XHTML”,那么瀏覽器實際上根本不使用XHTML,所以當您使用時,您將獲得old-school-HTML訪問innerHTML ,你不會看到自我關閉/>形式。

沒問題。 W3C標准僅涉及原始文件中的標記,之后的任何更改都直接發布到DOM(不是您的醬碼),這也是W3C標准。 這絕不會影響您網站的標准合規性。

更詳細地說,HTML和XHTML只是構建DOM(文檔對象模型)的不同方式,最好將其描述為用於描述網頁的大型節點樹結構。 一旦構建了DOM,用於構建它的語言就無關緊要了。如果你願意,甚至可以使用純javascript構建DOM。

它永遠不會重要!我曾經確認W3C的每一個標准,但它變成了一個愚蠢的事情! 只要符合其中允許您編寫跨瀏覽器的safe版本,您的案例絕對不是其中之一,因為它從來不是問題而且不會導致任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM