2012-06-15 53 views
0

我有一個動態生成的網頁通過javascript,當我嘗試使用$("html").html()獲取它的html代碼。我得到了一切,而且很好。唯一的問題是空的標籤,如<link />, <input />, <img />, <br /> 沒有顯示,因爲我想要的。以適當的格式獲取html源代碼

我希望他們能夠顯示在適當的封閉格式如下 -

<input type="text" name="nm" /> 

但是之後就被顯示爲

<input type="text" name="nm"> 

即沒有結束

我想創建一個html在這個字符串的Java對象,但我得到一個異常像無效的HTML。

任何解決方案?

+0

[jquery html()無法將所有xhtml轉換爲html標準](http://stackoverflow.com/questions/10606627/jquery-html-cannot-convert-all-xhtml-to-html-standard) ? – fcalderan

+0

請參閱http://api.jquery.com/html/:'此方法使用瀏覽器的innerHTML屬性。有些瀏覽器可能不會返回原始文檔中完全複製HTML源代碼的HTML。' – Codesleuth

回答

1

我希望他們能夠顯示在適當的封閉格式如下

,在XHTML唯一的「正確的」。它只能在HTML中容忍。如果你在正確地服務,正版XHTML文檔,瀏覽器應該返回有效的XML。 (它可能不會,但它應該)。如果您使用XHTML標記湯(服務XHTML爲text/html)或使用任何形式的HTML(HTML4嚴格,HTML4過渡,HTML5,根本沒有文檔類型),瀏覽器應該返回HTML(它沒有多餘的固體)。更多:http://www.w3.org/TR/html5/embedded-content-0.html#dom-innerhtml

在任何情況下,這是由瀏覽器,而不是jQuery。據我所知,你不能要求一個特定的變體(除了指定你的文檔類型並提供正確的內容類型,目前的瀏覽器可能仍然不夠用)。

+0

我想在這個字符串的java中創建一個html對象,但我得到了一個異常像無效html。 – Ashwin

+1

@MotaBOS:您正在使用jQuery將DOM結構序列化爲HTML字符串,然後將該字符串提供給拋出錯誤聲明其格式錯誤的Java程序?在HTML中肯定沒有任何有關''的錯誤信息。這聽起來像你需要確保你使用的Java分析器是HTML模式,而不是XHTML模式。如果它沒有,也許看另一個(JSoup是流行的)。或者,可悲的是,後處理或在JavaScript中做自己的序列化(這聽起來很糟糕,但並不是那麼辛苦;一個遞歸下降函數和適當的轉義......)。 –

+0

謝謝,這對我有足夠的幫助。 – Ashwin