2013-01-24 19 views
1

以前html片段,但在這種特殊情況下,我將iframe的內容作爲字符串獲取 - 所以它是一個字符串,代表完整的HTML 文檔,我需要以相同的方式操作。這個技巧,或者甚至只是在jQuery中包裝字符串不再有效。

Here is a jsbin demonstrating the issue

html = """ 
<html> 
<head> 
    <style>* { box-sizing: border-box; }</style 
</head> 
<body style="max-height: 750px"> 
    <style> body { background-color: 'lavender'; }</style> 
    <div> 
    <p>Hi</p> 
    <p id="name">Your Name</p> 
    </div> 
</body> 
</html> 
""" 

$html = $(html) 
$html.find('#name').text("George") 

console.log $html.html() 

如何分析和操作的完整html文件?

請注意,頭可能包含樣式元素,並且主體可能具有我不想丟失的屬性。當文檔包含svg時,我也會看到奇怪的序列化。

我不背水戰jQuery的,如果有另一個庫,這將使更多的意義在這裏

+0

'body'標記內的'style'標記?這是無效的標記。 – undefined

+1

如果'style'標籤的'style'標籤不是無效的(當然文檔是HTML5)。回到問題中......我可以想到一些相當令人反感的方法來處理這個問題,但總的來說,如果我一開始試圖嘗試類似這些方式的東西,我不得不懷疑我是否只是用醜陋拼湊來避免更大的問題。 – JayC

+0

@undefined我不認爲這是正確的。根據MDN風格是'元數據內容,如果範圍屬性存在:流內容',所以至少在一種情況下它是絕對允許的,而在另一種情況下,它與鏈接或腳本屬於同一類別 –

回答

2

最理智的方式帶來可能只是爲了創建你的字符串的文件(見How to create Document objects with JavaScript),操縱它(不管jQuery是否可以操縱它,我不確定,但我認爲是這樣),然後從它中獲取所需的任何內容。你必須假定html是正確的,或至少解析(儘可能相同)的DOM樹。我注意到在你的例子中,head標籤有一個帶有無效結束標籤的樣式標籤,所以我不知道如何在所有瀏覽器中工作。 (對不起,沒有工作的例子,今天早上我有點忙,但我只是想把那個想法放在那裏)。

相關問題