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

标签 html node.js dom phantomjs jsdom

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

我需要做的操作之一是添加一个 <script>其 JavaScript 代码将对 DOM 进行进一步操作的元素。

问题是,只要我将脚本添加到 jsdom Node ,jsdom 就会运行它,并且操作的第二阶段会立即完成,因此输出的 HTML 是错误的。

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

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

有办法吗?

最佳答案

使用它来禁用 jsdom 中的 Javascript 执行

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

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

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

关于html - 将脚本元素添加到 DOM 而不执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962342/

相关文章:

javascript - Jquery 替换 html,仅在更改的地方

javascript - 循环遍历 ul li 并使用 insertBefore 将图像向上移动两个元素

html - CSS3 : Transition of background color to transparent

javascript - 带有索引范围变量数组的 AngularJS 动态模板

javascript - 通过 Node js 将数据更新到 firebase 项目列表时检查更新结果

node.js - 如何在 serverless-mocha-plugin 中模拟单元测试功能

javascript - 使用 vanilla JS 和循环绘制表格

html - 调整浏览器大小时图像跳出div

javascript - 输入更改事件和输入字段的问题

node.js - 使用 Protractor 检测浏览器