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


84

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

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

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

답변:


82

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


8
IE 9가 설치된 상태에서 IE 8 모드에서 렌더링 할 페이지를 가져올 수 없습니다. 값을 7000으로 설정하면 IE 7 모드가되고 8000/8888/9000/9999는 IE 9 모드가됩니다. 이것이 일종의 버그인지 또는 의도적 인 것인지는 모르겠습니다.
mikel 2011-07-09

2
나를 위해 작동하기 전에 current_user 및 local_machine 모두에 키를 추가해야했습니다. 그러나 이후 성공했습니다.
Sarah Bailey

이 블로그 게시물 인 weblog.west-wind.com/posts/2012/feb/15/… 에서는 레지스트리 항목이 32 비트 또는 64 비트 Windows에 따라 달라진다고 언급합니다. 32 비트 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION및 64 비트 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION.
Richard Chambers

129

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와 달리 관리자 권한이 필요하기 때문에 유용합니다.


2
콘텐츠 부분 의 다른 값은 여기에서 찾을 수 있습니다. msdn.microsoft.com/en-us/library/ie/ms533876(v=vs.85).aspx
KB

이 설정을 CSS 파일에 저장할 수 있다면 더 좋을 것입니다. 이제 많은 문서를 검토해야합니까? 아니면 Visual Studio에 여러 줄로 된 검색 및 바꾸기 기능이 있습니까?
KB

2
메타 태그를 시도했지만 작동하지 않습니다. "HTML1115 : 문서 모드가 이미 완료 되었기 때문에 X-UA-Compatible META 태그 ( 'IE = 9')가 무시되었습니다."라는 오류 메시지가 표시되어 evolpin.wordpress.com/2011/02/ 웹 페이지로 연결됩니다. 25 /… . 해결책은 메타 태그가 <head> 블록 내의 첫 번째 요소인지 확인하는 것이 었습니다.
Steg

21
64 비트 Windows에서 32 비트 응용 프로그램 (32 비트 MSIE 호출)을 실행하는 경우 레지스트리 항목을 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION에 추가해야합니다. 대신.
igordc 2012 년

1
xsl / xslt를 통해 html을 렌더링하고 있었는데 regedit가 어떤 이유로 작동하지 않았습니다. 메타가 트릭을했습니다. 감사!
MazarD

25

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

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

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


17

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


16

완전하게 ...

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 웹 브라우저 동작에 영향을 미치는 다른 여러 레지스트리 변경 사항에 대한 참고 사항이 포함되어 있습니다.


1
DWORD 부분은 매우 중요합니다. QWORD는 작동하지 않으며 쉽게 실수 할 수 있습니다.
pvieira

VS에서 디버깅 할 때 myappname.vshost.exe에 대한 항목도 추가해야합니다. 반면에 디버거에서 앱을 실행 한 다음 디버거에서 실행하는 것만으로도 트릭을 수행 할 수 있다고 생각합니다. 나는 그것이 나를 위해 한 번 효과가 있다고 생각합니다. 하지만 100 % 확실하지 않습니다.
Papa Smurf

1
IE11 구성 때문에 IE11을 열고 신뢰할 수있는 사이트에 대상 URL을 추가해야했습니다. 이것이 없으면 레지스트리가 올바르게 구성 되었더라도 페이지 스크립트가 실행되지 않습니다.
Tony

15

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

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

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

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

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


이것은 문제와 관련이 없습니다. WebBrowser 컨트롤은 특정 프로그램에 대한 레지스트리 설정으로 재정의하지 않는 한 IE7 모드에서만로드됩니다.
Christian

4
@Christian 확실한가요? 내가 알 수있는 한, 웹 페이지가 <meta http-equiv="X-UA-Compatible" content="IE=edge" >헤더에 포함되어 있으면 webBrowser는 최신 IE 모드로로드됩니다. 왜 mikel의 답변에 90 개 이상의 찬성표가 있습니까? 그의 솔루션이 작동하기 때문입니다. 웹 페이지를 변경할 수 있으면 레지스트리를 변경할 필요가 없습니다.
Tyler Long

나는 100 % 긍정적이지만 웹 사이트 위치에 따라 다르다고 생각합니다. 저는 로컬 콘텐츠를로드하고 있으며 버전을 변경하는 유일한 방법은 레지스트리를 이용하는 것입니다. 저를 믿으십시오. 작동하는 다른 모든 것에 대해 레지스트리 솔루션을 버릴 것이지만 다른 것은 작동하지 않는 것 같습니다.
Christian

ie = edge는 레지스트리를 건드리지 않고 나를 위해 일했습니다. 감사!
Yisroel M. Olewski

@Christian 이것은 실제로 질문과 관련이 있습니다-솔루션이 잘 작동합니다.
MarzSocks

6

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

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

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


3

예, WebBrowser 컨트롤은 설치된 IE 버전을 사용합니다. 즉, IE 8이 설치된 컴퓨터에서 애플리케이션을 실행하면 의존하는 IE 9 기능을 사용할 수 없습니다.


2
내 대답을 다시 읽으십시오. 반대표는 요청되지 않았습니다. 나는 그가 IE9 기능을 사용하려고 시도한 다음 IE9가없는 컴퓨터에 배포하면 해당 기능이 작동하지 않는다고 말했습니다. 이전 버전과의 호환성 레지스트리 설정은 그 사실을 변경하지 않습니다.
Josh

16
당신의 첫 번째 문장은 명백히 거짓입니다. 두 번째 문장은 최소한 명백하고 게으른 것입니다. 보복 찬성에 대한 BTW 감사합니다. 매우 성숙합니다.
whitehawk 2011

3
WebBrowser 컨트롤은 설치된 IE 버전을 사용합니다. 그러나 탐지 스크립트는 그것을 인식하지 못할 수 있습니다. 이 [사이트 ( whatismybrowser.com/)][1]을 사용 해보세요 . 다른 사이트에서 잘못된 정보를 제공 한 것을 알고 있지만이 사이트는 브라우저를 내 컴퓨터에 설치된 IE 버전으로 올바르게 식별했습니다. [1] : whatismybrowser.com
cjbarth

3

이 솔루션을 찾았지만 저에게 효과가 없었습니다! 64 비트를 사용하고 있었기 때문에 레지스트리를 교체해야했습니다.

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

모든 사람이 말하는 대신 :

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

1

앱의 레지스트리 설정을 지정하는 다음의 (C #) 코드가 마음에 들었습니다. 권한이 필요한 경우 설치 후 잘 릴지 확실하지 않습니다. 저에게는 WPF의 WebBrowser 컨트롤 내에서 WebSocket을 사용할 수없는 문제가 해결되었습니다.

C # 웹 브라우저 Ajax 호출


1

나는 같은 문제가 있었고 여기의 레지스트리 답변이 작동하지 않았습니다.

XP에서 잘 작동하고 Windows 7 (64 비트)에서는 실패한 새 버전의 프로그램에서 브라우저 컨트롤을 사용했습니다. 이전 버전은 XP와 Windows 7에서 모두 작동했습니다.

브라우저에 표시된 웹 페이지는 오래된 SVG 맵을 표시하기 위해 이상한 플러그인을 사용합니다 (Java 애플릿이라고 생각합니다).

문제는 Windows 7의 DEP 보호와 관련이 있습니다.

이전 버전의 dotnet 2는 exe에서 DEP 필수 플래그를 설정하지 않았지만 dotnet 2, SP 1부터 설정했습니다 (예, 컴파일 동작 및 따라서 exe의 런타임 동작은 컴파일 한 컴퓨터에 따라 변경되었습니다. ..).

MSDN 블로그 NXCOMPAT 및 C # 컴파일러 에 문서화되어 있습니다. 인용 : 의심 할 여지없이 몇몇 개발자는 놀라게 할 것입니다. 프레임 워크 서비스 팩을 다운로드하고, 다시 컴파일하고, 앱을 실행하면 이제 IP_ON_HEAP 예외가 발생합니다.

Visual Studio의 포스트 빌드에 다음을 추가하면 exe에 대한 DEP가 해제되고 모든 것이 예상대로 작동합니다.

all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"

-3

화이트 호크의 대답에 대해. 나는 경험에 약간의 실습을 추가하려고 노력하고 있습니다. 댓글을 추가하려고했지만 너무 길다고 불평합니다.

기본적으로 IE 9를 설치하지 않으면 레지스트리 스위치 FEATURE_BROWSER_EMULATION이 전혀 작동하지 않습니다.

예를 들어, 오늘 내 자신의 경험은 .net webcontrol이 IE10 모드에서 작동하도록하려고했습니다. 왜냐하면 렌더링하려는 하나의 html이 VS2012에서 .netControl에서 작동하지 않고 html을 IE8로로드 할 때도 작동하지 않기 때문입니다. 직접적으로 여전히 CSS가 제대로 렌더링되지 않습니다 (차단 된 콘텐츠 허용이라고 말한 후에도). 그러나 친구의 win 8 시스템에서 IE10으로 동일한 html을 테스트했습니다. 그래서 .net webControl을 IE 10 모드로 설정하려고하는데 계속 실패합니다.

이제 나는 이것이 bcos라고 생각했습니다. 내 win 7 컴퓨터에는 IE8 만 설치되어 있으므로 FEATURE_BROWSER_EMULATION 스위치 (IE9, IE10 IE11 값)에 설정 한 값에 관계없이 전혀 작동하지 않습니다!

그런 다음 Win 7 컴퓨터에 IE 10을 다운로드하여 설치했습니다. 여전히 작동하지 않고 FEATURE_BROWSER_EMULATION을 추가하여 작동하기 시작했습니다!

또한 내가 설정 한 값에 관계없이 기본적으로 값을 0으로 설정하더라도 webControl은 여전히 ​​나를 위해 작동하는 IE 10 모드를 사용하고 있습니다.

요약하자면 IE X가 설치되어 있지만 .Net webControl이 IE (X + N) N> 0 modo에서 작동 하도록하려면 다음 두 가지 를 수행해야합니다.

  1. MS 웹 사이트로 이동하여 컴퓨터에 IE (X + N)를 다운로드하여 설치합니다. 설치 후 재부팅해야합니다.

  2. whitehawk의 대답을 적용하십시오.

기본적으로 : 레지스트리를 사용하여이 기능의 값을 제어하려면 다음 설정에 실행 파일 이름을 추가하고 원하는 설정과 일치하도록 값을 설정하십시오.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION
                     contoso.exe = (DWORD) 00009000

Windows Internet Explorer 8 이상. FEATURE_BROWSER_EMULATION 기능은 Internet Explorer의 기본 에뮬레이션 모드를 정의하고 다음 값을 지원합니다.

값 설명

  • 11001 (0x2AF9 Internet Explorer 11.! DOCTYPE 지시문에 관계없이 웹 페이지가 IE11 edge 모드로 표시됩니다.

    11000 (0x2AF8) IE11. 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지는 IE11 edge 모드로 표시됩니다. IE11의 기본값입니다.

    10001 (0x2711) Internet Explorer 10. 웹 페이지는! DOCTYPE 지시문에 관계없이 IE10 표준 모드로 표시됩니다.

    10000 (0x02710) Internet Explorer 10. 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지는 IE10 표준 모드로 표시됩니다. Internet Explorer 10의 기본값입니다.

    9999 (0x270F) Windows Internet Explorer 9. 웹 페이지는! DOCTYPE 지시문에 관계없이 IE9 표준 모드로 표시됩니다.

    9000 (0x2328) Internet Explorer 9. 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지는 IE9 모드로 표시됩니다. Internet Explorer 9의 기본값입니다.

    중요 Internet Explorer 10에서 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지는 IE10 표준 모드로 표시됩니다.

    8888 (0x22B8) 웹 페이지는! DOCTYPE 지시문에 관계없이 IE8 표준 모드로 표시됩니다.

    표준 기반! DOCTYPE 지시문이 포함 된 8000 (0x1F40) 웹 페이지는 IE8 모드로 표시됩니다. Internet Explorer 8의 기본값 중요 Internet Explorer 10에서 표준 기반! DOCTYPE 지시문이 포함 된 웹 페이지는 IE10 표준 모드로 표시됩니다.

    표준 기반! DOCTYPE 지시문이 포함 된 7000 (0x1B58) 웹 페이지는 IE7 표준 모드로 표시됩니다. WebBrowser 컨트롤을 호스팅하는 응용 프로그램의 기본값입니다.

여기에 전체 참조


without IE 9 installed, the registry switch EATURE_BROWSER_EMULATION won't work AT ALL.-이건 틀렸어. IE8 만 설치되어 있고 스위치를 완벽하게 사용하여 웹 브라우저를 다른 렌더링 모드로 전환 할 수 있습니다.
GSerg 2014 년

IE10 모드를 얻으려고 IE8을 설치하려고 시도했지만 전혀 작동하지 않습니다! 그냥 작동하지 않았다, 다시 시도
Gob00st
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.