C#에서 윈폼의 WebBrowser컨트롤을 사용하여 브라우저를 만들 때, 아래와 같은 경우 경로 탐색을 정상적으로 하지 못한다.
<a href="javascript:void(0)" onclick="func()"...></a> func(){ ... window.location.replace("url2"); ... } |
위와 같은 페이지를 만나면 url2로 탐색을 하고, javascript:void(0)을 다음에 탐색을 하는데, 이 코드가 동작하지 않음.
해결책은 레지스트리에 값을 써야한다. (레지스트리 건드리기 싫어하지만 답이 없다.)
HKLM(or HKCU)\\Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl에..
FEATURE_SCRIPTURL_MITIGATION 키 아래에 아래 값을 설정한다.
$(실행파일명) (0x00000001)
값 형태는 DWORD. 파일명은 실행하는 파일명(exe). 전체경로를 쓰는게 아니라 올라오는 프로세스 이름을 기록해주면 된다.
참고로 WebBrowser의 Internet Explorer 실행 버전을 정해주려면
FEATURE_SCRIPTURL_MITIGATION 대신 FEATURE_BROWSER_EMULATION 키 아래에 파일명과 버전명을 기록해주면 됨. 단, 버전은 아래와 같다.
IE8 : 8000, 8888
IE9 : 9000, 9999
IE10 : 10000, 10001
IE11 : 11000, 11001
각각 앞의 8000,9000,10000,11000등은 각 IE버전의 기본 값.
댓글