2017-09-06 16 views
1

Word에서 만든 기존 HTML 파일을 구문 분석하고 마사지합니다 (파일을 다시 만들 수 없음).HTMLDocument 파서에서 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]> 

내가 IHTMLDocument2 개체의 인스턴스로 HTML 파일을로드 : 포함 된 이미지가있는 HTML 파일은 다음과 유사한 VML 사용 가능 브라우저에 대한 조건부 서식을 포함한다. IE는 VML을 지원하기 때문에 위의 <img> 태그를 구문 분석하여 shapeimagedata 태그 만 남깁니다. 모든 vml 특정 태그를 무시하고 <img> 태그로만 작업하는 것을 선호합니다.

프로그래밍 방식으로 (스크립트를 사용하지 않으려면 IHTMLDocument2.desgnMode = "On"과 유사하게) VML 지원을 사용하지 않도록 설정하는 방법이 있습니까?

+0

여기에 설명 된 내용을 시도해 볼 수 있습니까? https://msdn.microsoft.com/en-us/library/aa753685.aspx :'# default # VML #'DWORD 키를 값 0으로'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ AllowedBehaviors' –

+0

@Simon Mourier - # default # VML #은 이미 값이 0으로 존재합니다. 삭제하거나 1로 변경하면 불행히도 차이가 생깁니다 ... –

+1

확인 했습니까 32 비트 동급 제품 (HKLM \ Software \ Wow6432Node \ ...)? 그렇지 않으면 HKLM \ SOFTWARE \ WOW6432Node \ Microsoft \ Internet Explorer \ Version Vector \ VML을 0.9로 수정하려고 할 수 있습니까? 예를 들어 64 비트 컴퓨터에서 iexplore는 32 비트를 실행하고 WOW6432Node 노드를 확인합니다 ... –

답변

1

Word에서 생성하는 단어는 "Conditional comments"입니다.

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

expression는 사업자와 "Version vectors"을 사용하여보다 구체적으로, 우리가 여기 다음과 같은 형태를 취한다 "조건부 주석을 하위는 숨겨". 일반적으로 이러한 벡터는 "IE"를 참조하고 HTML compatiblity issues을 처리하는 데 사용됩니다.

그러나 당신이 사용할 수있는 사용자 정의 버전 벡터 : 추가 기능을 개발하는 경우

, 당신은 웹 페이지에 버전 정보를 제공하기 위해 사용자 정의 버전 벡터를 사용할 수 있습니다. 사용자 지정 버전 벡터를 정의하려면 REG_SZ 값을 버전 벡터 레지스트리 키에 추가하십시오. 새 키의 이름은 여기에 표시된 과 같이 조건부 메모에 사용할 기능 값을 정의합니다.

HKEY_LOCAL_MACHINE 
    Software 
     Microsoft 
     Internet Explorer 
      Version Vector 
       Contoso = 0.9 

위의 예는 가상의 Contoso의 제어의 시험판 버전 (0.9)가 사용자의 컴퓨터에 설치 것을 나타 내기 위해서 사용자 정의 버전 벡터를 사용합니다. 다음 예는 조건부 주석이이 정보를 사용하는 방법을 보여줍니다. VML 자체이므로

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

는 (포함) 부가하면 HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version Vector\VML 키 및/또는 64 비트 OS HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Internet Explorer\Version Vector\VML에서 32 비트 일 플레이 할 수있다. 분명히 키를 완전히 삭제하면 문제가 해결되었습니다.