2017-09-06 2 views
1

Ich analysiere und massiere vorhandene HTML-Dateien, die mit Word erstellt wurden (die Dateien können nicht neu erstellt werden). Die HTML-Dateien mit eingebetteten Bildern umfassen bedingte Formatierung für die VML-fähige Browser ähnlich dem folgenden:Deaktivieren der VML-Unterstützung in HTMLDocument-Parser

 <!--[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]> 

ich die HTML-Datei in eine Instanz des IHTMLDocument2 Objekt laden. Da der IE VML unterstützt, parst er das -Tag oben aus und hinterlässt nur shape und Tags. Ich würde es vorziehen, alle vml-spezifischen Tags zu ignorieren und nur mit dem Tag zu arbeiten.

Gibt es eine Möglichkeit, die VML-Unterstützung (ähnlich IHTMLDocument2.desgnMode = "On" zum Deaktivieren von Skripts) programmgesteuert zu deaktivieren?

+0

Können Sie versuchen, was hier beschrieben ist: https://msdn.microsoft.com/en-us/library/aa753685.aspx: fügen Sie einen '# default # VML #' DWORD Schlüssel mit einem Wert von 0 zu 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Interneteinstellungen \ AllowedBehaviors' –

+0

@Simon Mourier - # default # VML # existiert bereits mit dem Wert 0. Das Löschen oder Ändern auf 1 macht leider keinen Unterschied ... –

+1

Haben Sie überprüft das 32-Bit-Äquivalent auch (HKLM \ Software \ Wow6432Node \ ...)? Andernfalls können Sie versuchen, HKLM \ SOFTWARE \ WOW6432Node \ Microsoft \ Internet Explorer \ Version Vector \ VML auf 0,9 zu ändern (auf meinem 64-Bit-Rechner, iexplore läuft anscheinend irgendwie 32-bit und überprüft den WOW6432Node-Knoten ...) –

Antwort

1

Was Word generiert, heißt "Conditional comments". Genauer gesagt haben wir hier „Downlevel-hidden bedingte Kommentare“, die die folgende Form:

<!--[if expression]> HTML <![endif]--> 

Die expression verwendet Operatoren und "Version vectors". Im Allgemeinen beziehen sich diese Vektoren auf "IE" und werden verwendet, um HTML compatiblity issues zu behandeln.

Aber Sie können benutzerdefinierte Version Vektoren verwenden:

Wenn Sie entwickeln Add-ons können Sie benutzerdefinierte Version Vektoren verwenden Versionsinformationen auf Webseiten zur Verfügung zu stellen. Um einen benutzerdefinierten Versionsvektor zu definieren, fügen Sie dem Versionsvektorregistrierungsschlüssel einen REG_SZ-Wert hinzu. Der Name des neuen Schlüssels definiert den Feature-Wert, der in einem Bedingungskommentar verwendet werden soll, z. B. .

HKEY_LOCAL_MACHINE 
    Software 
     Microsoft 
     Internet Explorer 
      Version Vector 
       Contoso = 0.9 

Das obige Beispiel verwendet eine benutzerdefinierte Version Vektor, um anzuzeigen, dass eine Pre-Release-Version (0.9) der fiktiven Contoso Kontrolle auf dem Computer des Benutzers installiert ist. Dieses nächste Beispiel zeigt, wie ein bedingter Kommentar diese Information verwenden kann.

<!--[if lt Contoso 2]> 
<p>Your version of the Contoso control is out of date; Please update to the latest.</p> 
<![endif]--> 

Da VML selbst ein (embedded) Add-on, können Sie mit HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version Vector\VML Schlüssel und/oder die 32-Bit-ein auf einem 64-Bit-OS HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Internet Explorer\Version Vector\VML spielen. Offensichtlich löste das vollständige Löschen des Schlüssels dein Problem.

Verwandte Themen