在HTMLDocument解析器中禁用VML支持

时间:2017-09-06 22:42:08

标签: internet-explorer dom vml ihtmldocument2

我正在解析和按摩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>标记,只留下shapeimagedata标记。我宁愿忽略所有vml特定标记,只能使用<img>标记。

有没有办法以编程方式禁用VML支持(类似于IHTMLDocument2.desgnMode = "On"来禁用脚本)?

1 个答案:

答案 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位密钥。显然,完全删除键修复了你的问题。