我有HTML可能包含來自Surveymonkey的嵌入代碼,我希望通過jSoup運行以確保生成的HTML有效。 XSS在這裏不是問題。下面是一個示例HTML片段(編輯:JavaScript的內容是在這種情況下不相關的,所以我已經取代了Surveymonkey JS用一個簡單的日誌語句):在缺少第一串jsoup解析()似乎丟棄前導<script>元素
<script type="text/javascript">console.log('foo');</script>
<div id="somecontent">some content</div>
<script type="text/javascript">console.log('bar');</script>
一個parse(htmlSnippet).body().html()
結果script
- 嵌段共:
<div id="somecontent"> some content </div>
<script type="text/javascript">console.log('bar');</script>
第二script
- 嵌段不然而剝離。
如果我用空的<span></span>
作爲前綴,jSoup保留script
。因此,對於下面的代碼片段
<span></span>
<script type="text/javascript">console.log('foo');</script>
<div id="somecontent">some content</div>
<script type="text/javascript">console.log('bar');</script>
parse(htmlSnippet).body().html()
回報
<span></span>
<script type="text/javascript">console.log('foo');</script>
<div id="somecontent">some content</div>
<script type="text/javascript">console.log('bar');</script>
所以,很顯然,我必須在這裏有些不對勁。任何人都可以解釋這個問題嗎?
我可以爲此嘗試Tidy,但我寧願有一個庫來糾正用戶在標記中的錯誤以及使用白名單進行清理(這不是問題)。
請不要給我們顯示縮小的代碼 –
您能否讓腳本更具可讀性? – Adam
對不起,我編輯了原文,並用簡單的日誌語句替換了原來的Surveymonkey JS。實際的JS內容在這裏無關緊要,問題僅適用於任何主要的腳本塊。 – Ratcreamsoup