Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 将脚本元素添加到DOM而不执行它_Html_Node.js_Dom_Phantomjs_Jsdom - Fatal编程技术网

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

Html 将脚本元素添加到DOM而不执行它,html,node.js,dom,phantomjs,jsdom,Html,Node.js,Dom,Phantomjs,Jsdom,我正在创建一个节点脚本,用于读取HTML文件,将其作为DOM文档进行处理,然后将其序列化回另一个文件。我现在正在用 我需要做的操作之一是添加一个元素,该元素的JavaScript代码将对DOM进行进一步的操作 问题是,只要我将脚本添加到jsdom节点,jsdom就会运行它,并且第二阶段的操作会立即完成,因此输出的HTML是错误的 我以为这只会发生在PhantomJS中,而不是jsdom中,但我错了 我对使用jsdom没有特别的限制,我可以切换到PhantomJS或其他任何东西,但我需要生成一个H

我正在创建一个节点脚本,用于读取HTML文件,将其作为DOM文档进行处理,然后将其序列化回另一个文件。我现在正在用

我需要做的操作之一是添加一个
元素,该元素的JavaScript代码将对DOM进行进一步的操作

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

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

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


有什么方法可以做到这一点吗?

使用它可以禁用jsdom中的Javascript执行

jsdom.defaultDocumentFeatures = {
FetchExternalResources: false,
ProcessExternalResources: false
};
如果nodejs产生错误,那么也可以在jsdom中禁用变异事件

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

你不能添加js脚本并对整个脚本进行注释,然后在生成最终输出之前删除它们吗?为了保持它的唯一性,它可以是“/*”+某个唯一标识符的组合?这只是一种攻击。
innerHTML
不会执行脚本标记(不过不知道jsdom的情况)。