[c#] IE9 WebBrowser 컨트롤은 SVG를 포함하여 IE9의 모든 기능을 지원합니까?

최근에 IE9- 베타로 업그레이드했습니다. 이제 .Net (3.5) WinForm 응용 프로그램에서 WebBrowser컨트롤 을 사용하고 싶습니다 .

그래서 내 질문은 WebBrowser컨트롤이 IE9의 모든 속성과 기능을 표시 하는지 여부 입니다.

내 관심사는 SVG 그래픽을 렌더링하고 싶다는 것입니다.



답변

IE8 버전과 마찬가지로 WebBrowser 컨트롤의 IE9 “버전”은 실제로 하나에 여러 브라우저가 있습니다. IE8 버전과는 달리 doctype을 변경하여 페이지 내 렌더링 모드를 좀 더 제어 할 수 있습니다. 물론 브라우저 모드를 변경하려면 이전 답변과 같이 레지스트리를 설정해야합니다. 다음은 FEATURE_BROWSER_EMULATION에 대한 reg 파일 조각입니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"contoso.exe"=dword:00002328

다음은 전체 코드 세트입니다.

  • 9999 (0x270F) -Internet Explorer 9. 웹 페이지는! DOCTYPE 지시문에 관계없이 IE9 표준 모드로 표시됩니다.
  • 9000 (0x2328) Explorer 9. 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지가 IE9 모드로 표시됩니다.
  • 8888 (0x22B8)- ! DOCTYPE 지시문에 관계없이 웹 페이지가 IE8 표준 모드로 표시됩니다.
  • 8000 (0x1F40) -표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지가 IE8 모드로 표시됩니다.
  • 7000 (0x1B58) -표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지가 IE7 표준 모드로 표시됩니다.

전체 문서 :

http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation


답변

WebBrowser 컨트롤은 설치 한 IE 버전을 사용하지만 호환성을 위해 기본적으로 페이지를 IE7 표준 모드로 렌더링합니다.

새로운 IE9 기능을 활용하려면 HTML 페이지의 태그 <meta http-equiv="X-UA-Compatible" content="IE=9" >안에 메타 태그를 추가해야합니다 <head>.

이 메타 태그는 CSS, JavaScript 파일 등에 대한 링크 앞에 추가되어야 <head>제대로 작동합니다 (다른 <meta>태그 또는 태그 만 <title>앞에 올 수 있음).

다른 방법은 다음에 레지스트리 항목을 추가하는 것입니다.

HKLM> 소프트웨어> Microsoft> Internet Explorer> 기본> FeatureControl> FEATURE_BROWSER_EMULATION

그리고 거기에 값이 ‘9000’인 ‘myApplicationName.exe’를 추가하여 WebBrowser 컨트롤이 IE9 모드에서 페이지를 표시하도록합니다. 다른 값도 사용할 수 있지만 이 문서는 어떤 값을 사용하든 IE 8 모드에서 렌더링 할 페이지를 얻을 수 없기 때문에 완전히 정확하지는 않습니다.

HKLM 대신 HKCU의 동일한 경로에 레지스트리 키를 추가하는 것도 작동합니다. HKLM에 기록하려면 HKCU와 달리 관리자 권한이 필요하기 때문에 유용합니다.


답변

내가 이것을 찾았다는 다행이다. 다음은 매우 중요합니다.

<meta http-equiv="X-UA-Compatible" content="IE=9" >

이것이 없으면 내가 생성 한 보고서 중 어느 것도 IE8에서 훌륭하게 작동 했음에도 불구하고 IE9 설치 후에 작동하지 않을 것입니다. 웹 브라우저 컨트롤에 제대로 표시되지만 .Print ()를 호출하면 문자가 누락되거나 공백이 튀어 나옵니다. 모자이크에서도 렌더링 할 수있는 기본적인 HTML 일뿐입니다. heh IE7 호환 모드가 왜 망가 졌는지 잘 모르겠습니다. 특히 같은 페이지를 5 번 .Print () 할 수 있고 매번 다른 문자가 누락되도록 할 수 있습니다. 그것은 심지어 PDF 출력으로 이어질 것이므로 확실히 브라우저입니다.


답변

64 비트 Windows에 대한 메모. 앱이 64 비트 Windows에서 실행되는 경우 대신 [HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION]에서 DWORD를 설정해야합니다.


답변

완전하게 …

32 비트 OS의 경우 다음에 레지스트리 항목을 추가해야합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

*******또는*******

64 비트 OS의 경우 다음 위치에 레지스트리 항목을 추가해야합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

이 항목은 DWORDWebbrowser 컨트롤을 호스팅하는 실행 파일의 이름 인 이어야합니다 . 즉 :

myappname.exe (MSDN 웹 페이지에서와 같이 “Contoso.exe”를 사용하지 마십시오. 단지 자리 표시 자 이름 일뿐입니다)

그런 다음 다음 DWORD표에 따라 값을 지정하십시오.

http://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

DEFAULT 값이 아니기 때문에 10 진수 11001 또는 0x2AF9 hex — (IE 11 EMULATION)로 변경했습니다 (IE 11이 설치되어있는 경우 또는 모든 버전).

이 MSDN 문서에는 Internet Explorer 웹 브라우저 동작에 영향을 미치는 다른 여러 레지스트리 변경 사항에 대한 참고 사항이 포함되어 있습니다.


답변

이 스레드가 오래되었고 이미 포괄적 인 답변이 있다는 것을 알고 있습니다.

이것을 모르는 경우를 대비하여 :

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

IE 버전 번호를 다음과 같이 하드 코딩 할 필요가 없습니다.

<meta http-equiv="X-UA-Compatible" content="IE=9" >


답변

제공된 솔루션에 전적으로 동의하지만 약간의 설명이 필요하다고 생각합니다.

제공된 값으로 DWORD를 추가해야하는 각 프로세스 (vshost.exe, yourWinformApplication.exe.svchost 또는 application.exe의 이름도 읽음)에 대해, 필자의 경우 응용 프로그램에 9000 (십진수)을 그대로 둡니다. 이름을 지정하고 원활하고 오류없는 스크립트를 실행합니다.

가장 흔한 실수는 “contoso.exe”를있는 그대로 추가하고 모든 것이 작동한다고 생각하는 것입니다.