본문 바로가기

쓸만한 주저리

C# WebView에서 JQuery 쓰기

반응형

C# WebView(WebBrowser)에서는 기본적으로 IE7~9 정도의 옛날 IE 모듈이 실행되는 것 같다.

JQeury를 사용하려고 하면 EventListener가 작동하지 않는다느니 하는 경고가 뜬다.

그럴 때 이 함수를 실행해 주면 깔끔하게 해결된다.


public partial class MainWindow:Window {

    public MainWindow() {

      InitializeComponent();

//WebBrowser를 최신판으로!!!

      SetBrowserEmulationMode();

    }


    private void MainBrowser_Loaded(object sender,RoutedEventArgs e) {

      string curDir=System.IO.Directory.GetCurrentDirectory();

      Uri HomeUri=new Uri(String.Format("file:///{0}/../../Html/index.html",curDir));

      MainBrowser.Navigate(HomeUri);

    }


    private void SetBrowserFeatureControlKey(string feature,string appName,uint value) {

      using(var key=Registry.CurrentUser.CreateSubKey(

          String.Concat(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\",feature),

          RegistryKeyPermissionCheck.ReadWriteSubTree)) {

        key.SetValue(appName,(UInt32)value,RegistryValueKind.DWord);

      }

    }


    public void SetBrowserEmulationMode() {

      var fileName=System.IO.Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);


      if(String.Compare(fileName,"devenv.exe",true)==0||String.Compare(fileName,"XDesProc.exe",true)==0)

        return;

      UInt32 mode=10000;

      SetBrowserFeatureControlKey("FEATURE_BROWSER_EMULATION",fileName,mode);

    }

  }



SetBrowserFeatureControlKey 함수와 SetBrowserEmulationMode 함수를 추가하고,

MainWindow 함수에서 SetBrowserEmulationMode 함수를 실행하면 끝


WPF 기반이라 MainWindow 함수임



출처 : https://blog.tallan.com/2014/04/15/setting-compatibility-mode-of-a-wpf-web-browser/

반응형