我正在创建一个节点脚本,它读取一个HTML文件,将其作为DOM文档进行操作,并将其序列化回另一个文件。我现在用的是jsdom。
我需要做的一个操作是添加一个<script>
元素,它的JavaScript代码将对DOM做进一步的操作。
问题是,只要我将脚本添加到jsdom节点,jsdom就会运行它,并且操作的第二阶段会立即完成,因此输出HTML是错误的。
我以为这只会发生在幻影中,而不是jsdom,但我错了。
我没有使用jsdom的特殊约束,我可以切换到PhantomJS或其他任何东西,但是我需要生成一个HTML文件,其中添加了一个脚本,而不需要在节点程序执行期间运行脚本。
有办法吗?
最佳答案
使用此选项可以禁用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/