60 lines
2.7 KiB
C#
60 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Cef3;
|
|
namespace Sashulin.common
|
|
{
|
|
internal sealed class CwbLifeSpanHandler : CefLifeSpanHandler
|
|
{
|
|
private ChromeWebBrowser webBrowser;
|
|
public CwbLifeSpanHandler(ChromeWebBrowser browser)
|
|
{
|
|
webBrowser = browser;
|
|
}
|
|
|
|
protected override void OnAfterCreated(CefBrowser browser)
|
|
{
|
|
base.OnAfterCreated(browser);
|
|
webBrowser.OnCreated(browser);
|
|
}
|
|
|
|
protected override bool DoClose(CefBrowser browser)
|
|
{
|
|
return false;
|
|
}
|
|
protected override bool OnBeforePopup(CefBrowser browser, CefFrame frame, string targetUrl, string targetFrameName, CefWindowOpenDisposition targetDisposition, bool userGesture, CefPopupFeatures popupFeatures, CefWindowInfo windowInfo, ref CefClient client, CefBrowserSettings settings, ref bool noJavascriptAccess)
|
|
{
|
|
bool res = false;
|
|
if (!string.IsNullOrEmpty(targetUrl))
|
|
{
|
|
if (webBrowser.selfRequest != null)
|
|
{
|
|
CefRequest req = CefRequest.Create();
|
|
req.FirstPartyForCookies = webBrowser.selfRequest.FirstPartyForCookies;
|
|
req.Options = webBrowser.selfRequest.Options;
|
|
/*CefPostData postData = CefPostData.Create();
|
|
CefPostDataElement element = CefPostDataElement.Create();
|
|
int index = targetUrl.IndexOf("?");
|
|
string url = targetUrl.Substring(0, index);
|
|
string data = targetUrl.Substring(index + 1);
|
|
byte[] bytes = Encoding.UTF8.GetBytes(data);
|
|
element.SetToBytes(bytes);
|
|
postData.Add(element);
|
|
*/
|
|
System.Collections.Specialized.NameValueCollection h = new System.Collections.Specialized.NameValueCollection();
|
|
h.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
req.Set(targetUrl, webBrowser.selfRequest.Method, null, webBrowser.selfRequest.GetHeaderMap());
|
|
webBrowser.selfRequest = req;
|
|
}
|
|
//webBrowser.selfRequest.Set(targetUrl, webBrowser.selfRequest.Method, webBrowser.selfRequest.PostData, webBrowser.selfRequest.GetHeaderMap());
|
|
res = webBrowser.OnNewWindow(targetUrl);
|
|
if (res)
|
|
return res;
|
|
}
|
|
res = base.OnBeforePopup(browser, frame, targetUrl, targetFrameName, targetDisposition, userGesture, popupFeatures, windowInfo, ref client, settings, ref noJavascriptAccess);
|
|
return res;
|
|
}
|
|
}
|
|
}
|