将脚本元素添加到DOM而不执行它
问题描述:
我正在创建一个读取HTML文件,将其作为DOM文档操作并将其序列化回另一个文件的节点脚本。我现在使用jsdom。将脚本元素添加到DOM而不执行它
我需要做的一个操作是添加一个<script>
元素,其JavaScript代码将对DOM进一步操作。
问题是,只要我将脚本添加到jsdom节点,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
};
+0
它的工作原理! :) 太感谢了 –
你能不能跟注释整个脚本,然后添加js脚本以后在生成最终输出之前删除它们?为了保持它的独特性,它可能是“/ *”+一些唯一标识符的组合?这只是一个黑客。 – Netham
'innerHTML'不会执行脚本标记(不过不知道jsdom的情况)。 – 2016-10-10 16:43:10