2016-10-10 116 views
1

我正在創建一個讀取HTML文件,將其作爲DOM文檔操作並將其序列化回另一個文件的節點腳本。我現在使用jsdom將腳本元素添加到DOM而不執行它

我需要做的一個操作是添加一個<script>元素,其JavaScript代碼將對DOM進一步操作。

問題是,只要我將腳本添加到jsdom節點,jsdom就會運行它,並且第二個操作階段立即完成,因此輸出HTML是錯誤的。

我以爲只會發生在PhantomJS中,而不是jsdom,但我錯了。

我對使用jsdom沒有特別的限制,我可以切換到PhantomJS或其他任何東西,但是我需要生成一個HTML文件,並且在執行我的Node程序期間不添加腳本而添加腳本。

有沒有辦法做到這一點?

+0

你能不能跟註釋整個腳本,然後添加js腳本以後在生成最終輸出之前刪除它們?爲了保持它的獨特性,它可能是「/ *」+一些唯一標識符的組合?這只是一個黑客。 – Netham

+0

'innerHTML'不會執行腳本標記(不過不知道jsdom的情況)。 – 2016-10-10 16:43:10

回答

1

使用此來禁用jsdom的Javascript執行

jsdom.defaultDocumentFeatures = { 
FetchExternalResources: false, 
ProcessExternalResources: false 
}; 

如果產生的NodeJS禁用錯誤突變事件也jsdom

jsdom.defaultDocumentFeatures = { 
FetchExternalResources: false, 
ProcessExternalResources: false, 
MutationEvents : false 
}; 
+0

它的工作原理! :) 太感謝了 –

相關問題