public class LifespanHandler : ILifeSpanHandler
{
//event that receive url popup
public event Action popup_request;
static public IBrowser popupBrowser = null;
bool ILifeSpanHandler.OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
newBrowser = null; // out 변수는 참조를 위한 변수이기 때문에 반드시 값을 할당해야 한다.
return false; // true이면 팝업이 뜨지 않게 된다.
}
bool ILifeSpanHandler.DoClose(IWebBrowser browserControl, IBrowser browser)
{ return false; }
void ILifeSpanHandler.OnBeforeClose(IWebBrowser browserControl, IBrowser browser) { }
void ILifeSpanHandler.OnAfterCreated(IWebBrowser browserControl, IBrowser browser) {
if(browser.IsPopup) // 새로 생성된 크로미움 브라우저가 팝업 상태라면
browser.CloseBrowser(true); // 바로 종료한다. 여기서 목적에 맞게 새로 코딩하자.
}
}
ILifeSpanHandler를 서브클래싱하여 namespace 안에 추가한다.
public ChromiumWebBrowser browser = null;
public void InitBrowser()
{
CefSettings settings = new CefSettings();
settings.CachePath = @"\packages\CefSharp.Common.63.0.1\CefSharp\x64\CefSharp.BrowserSubproce";
settings.PersistSessionCookies = true;
settings.Locale = "EUC-KR";
if(!Cef.IsInitialized)
Cef.Initialize(settings);
browser = new ChromiumWebBrowser("www.naver.com");
browser.Dock = DockStyle.Fill;
Controls.Add(browser);
LifespanHandler life = new LifespanHandler();
browser.LifeSpanHandler = life;
}
InitBrowser 함수를 통해 크로미움 메인 브라우저가 Form에 생성된다.
InitializeComponent 함수가 실행된 다음에 쓰면 된다.
CefSettings 또한 원하는 크로미움에 맞게 세팅하면 된다.
C# 'NonComVisibleBaseClass' 설정 QueryInterface 오류 (0) | 2018.08.02 |
---|---|
WPF TextBox 여러 줄이 입력되도록 설정하기 (0) | 2018.07.30 |
C# CefSharp.Core.dll 오류 해결 (0) | 2018.06.20 |
[C#, WPF]WebBrowser 자바스크립트(javascript) 실행하기 (0) | 2018.06.12 |