一些背景:
我正在使用JavaScript開發基於Web的移動應用程序。 HTML渲染是基於Safari的。跨域策略被禁用,所以我可以使用XmlHttpRequests調用其他域。這個想法是解析外部HTML並獲取特定元素的文本內容。
在過去,我一行一行解析文本,找到我需要的行。然後獲取該行標籤的內容。這非常麻煩,並且每次目標html更改時都需要進行大量維護。
所以,現在我想解析HTML文本到DOM中,並在其上運行css或xpath查詢。
它運作良好:JavaScript中的DOM解析
$('<div></div>').append(htmlBody).find('#theElementToFind').text()
唯一的問題是,當我使用瀏覽器加載HTML文本到DOM元素,它會嘗試加載所有外部資源(圖片,js文件等)。雖然它沒有造成任何嚴重問題,但我想避免這種情況。
現在的問題是:
我如何解析HTML文本,以DOM沒有瀏覽器中加載外部資源,或運行JS腳本?
一些想法,我一直在思考:
- 創建使用createDocument調用(
document.implementation.createDocument()
)新的文檔對象,但我不知道它會跳過外部資源的加載。在JS - 使用第三方DOM解析器 - 這是唯一一個我試過很糟糕與處理錯誤
- 使用iframe來創建新的文件,使之與相對路徑外部資源不會在控制檯 拋出一個錯誤
很好,+1和喜歡。是否保證沒有外部加載/腳本評估,或者它現在只是「正常工作」?如果這將在未來任何時候改變,它可能不是一個非常可靠的解決方案。 – pimvdb 2012-08-15 12:06:45
這很好,但有一個問題,它不會複製HTML節點上的屬性,但是它很小,因爲它實現了上述問題的主要部分。 – joseeight 2013-02-20 07:47:03