问题描述
我正在尝试将我们当前的 WebForms 应用程序转换为使用 ChromimumWebbrowser 的 CefSharp 浏览器。我在当前代码中遇到了以下内容:
private void webbrowser_DocumentCompleted(object sender,WebbrowserDocumentCompletedEventArgs e) {
if (!newWindow3ListenerAdded) {
newWindow3ListenerAdded = true;
SHDocVw.Webbrowser browser = (SHDocVw.Webbrowser)webbrowser.ActiveXInstance;
browser.NewWindow3 += browser_NewWindow3;
browser.NewWindow2 += browser_NewWindow2;
}
}
private void browser_NewWindow2(ref object ppdisp,ref bool Cancel)
{
webform.webbrowser.GoBack();
ppdisp = webform.webbrowser.ActiveXInstance;
webform.Show();
}
private void browser_NewWindow3(ref object ppdisp,ref bool cancel,uint dwFlags,string sourceUrl,string targetUrl)
{
cancel = true;
if (targetUrl.Contains(".pdf")) {
WebForm webForm = new WebForm();
webForm.Text = targetUrl;
webForm.Navigate(targetUrl);
webForm.Show();
} else {
webbrowser.Navigate(targetUrl);
}
}
有人可以指导我将其转换为 Cef。我知道我必须在 ILifeSpanHandler 中实现 OnBeforePopup()。但是我究竟如何编写逻辑来为不同类型的弹出窗口加载 pdf/GoBack/Navigate(targetUrl)。
我想我可以轻松地按原样转换 browser_NewWindow3()(检查是否 targetUrl.Contains(".pdf")),但是在什么条件下我可以处理 browser_NewWindow2() 逻辑,即 webbrowser.GoBack(); ?
这是我试过的,
OnBeforePopup() {
newbrowser = null;
if (targetUrl.Contains(".pdf")) {
CefForm cefForm = new CefForm();
cefForm.Text = targetUrl;
cefForm.Navigate(targetUrl);
cefForm.Show();
return false;
} else {
browserControl.Load(targetUrl);
return true;
}
}
但是我如何处理 browser_NewWindow2 逻辑?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)