我正在创建一个Node脚本,该脚本读取HTML文件,将其作为DOM文档进行操作,并将其序列化为另一个文件。我现在正在使用jsdom。
我需要做的一个操作是添加一个<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_account"
android:padding="@dimen/activity_horizontal_margin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="Hello Android!"/>
<Button
android:id="@+id/add_person"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center"
android:text="Add People"/>
</RelativeLayout>
元素,其JavaScript代码将对DOM进行进一步操作。
问题是,只要我将脚本添加到jsdom节点,jsdom就会运行它,并且操作的第二阶段立即完成,因此输出HTML是错误的。
我认为这只会发生在PhantomJS中,而不是jsdom,但我错了。
我没有使用jsdom的特殊限制,我可以切换到PhantomJS或其他任何东西,但我需要生成一个HTML文件,其中添加了一个脚本,而不是在执行我的Node程序时运行脚本
有办法吗?
答案 0 :(得分:1)
使用此选项禁用jsdom中的Javascript执行
jsdom.defaultDocumentFeatures = {
FetchExternalResources: false,
ProcessExternalResources: false
};
如果nodejs也在jsdom中生成错误禁用突变事件
jsdom.defaultDocumentFeatures = {
FetchExternalResources: false,
ProcessExternalResources: false,
MutationEvents : false
};