我正在解析和按摩Word创建的现有HTML文件(无法重新创建文件)。包含嵌入图像的HTML文件包括启用vml的浏览器的条件格式,类似于以下内容:
<!--[if gte vml 1]>
<v:shape
id="_x0000_i1042" type="#_x0000_t75" style='width:24pt;height:24pt'>
<v:imagedata src="test_files/image002.png" o:title="Text-HighlightColor-icon_32x32"/>
</v:shape>
<![endif]-->
<![if !vml]>
<img width=32 height=32 src="test_files/image002.png" v:shapes="_x0000_i1042">
<![endif]>
我将HTML文件加载到IHTMLDocument2
对象的实例中。由于IE支持VML,因此它会解析上面的<img>
标记,只留下shape
和imagedata
标记。我宁愿忽略所有vml特定标记,只能使用<img>
标记。
有没有办法以编程方式禁用VML支持(类似于IHTMLDocument2.desgnMode = "On"
来禁用脚本)?
答案 0 :(得分:1)
Word生成的内容称为"Conditional comments"。更具体地说,我们在这里&#34;下层隐藏的条件评论&#34;采取以下形式:
<!--[if expression]> HTML <![endif]-->
expression
使用运算符和"Version vectors"。
通常,这些向量指的是&#34; IE&#34;并用于处理HTML compatiblity issues。
但您可以使用自定义版本向量:
如果您开发附加组件,则可以使用自定义版本向量来提供 版本信息到网页。要定义自定义版本矢量, 将REG_SZ值添加到版本向量注册表项。的名字 new key定义要在条件注释中使用的特征值,如 这里显示。
HKEY_LOCAL_MACHINE Software Microsoft Internet Explorer Version Vector Contoso = 0.9
上一个示例使用自定义版本向量来指示a 虚构的Contoso控件的预发布版本(0.9)是 安装在用户的计算机上。下一个例子说明了如何 条件评论可能会使用此信息。
<!--[if lt Contoso 2]> <p>Your version of the Contoso control is out of date; Please update to the latest.</p> <![endif]-->
由于VML本身是一个(嵌入式)附加组件,因此您可以在64位操作系统HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version Vector\VML
上使用HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Internet Explorer\Version Vector\VML
密钥和/或32位密钥。显然,完全删除键修复了你的问题。