将脚本元素添加到 DOM 而不执行它

Add script element to DOM without executing it

我正在创建一个读取 HTML 文件的 Node 脚本,将其作为 DOM 文档进行操作,并将其序列化回另一个文件。我现在正在使用 jsdom

我需要做的一项操作是添加一个 <script> 元素,其 JavaScript 代码将对 DOM.

进行进一步操作

问题是,我一将脚本添加到jsdom节点,jsdom就运行它,第二阶段的操作立即完成,因此输出HTML是错误的。

我以为这只会发生在 PhantomJS 中,不会发生在 jsdom 中,但我错了。

我对使用 jsdom 没有特别的限制,我可以切换到 PhantomJS 或其他任何东西,但我需要生成一个 HTML 文件,其中添加了一个脚本,但没有 运行我的 Node 程序执行期间的脚本。

有办法吗?

使用它来禁用 Javascript 在 jsdom

中的执行
jsdom.defaultDocumentFeatures = {
FetchExternalResources: false,
ProcessExternalResources: false
};

如果 nodejs 在 jsdom 中也产生错误禁用突变事件

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