I have a WebBrowser in WPF and I keep getting this popup after successful login to a website
I've tried to suppress this using both hide script and an alert blocker without success.
Is there a way to suppress this popup in code only?
Code:
<WebBrowser x:Name="wpfBrowser"
Height="450"
MinHeight="450"
Width="825"
MinWidth="825"
view:WebBrowserBehaviors.BindableSource="{Binding LoginViewModel.URL}"
Navigated="wpfBrowser_Navigated"
Loaded="wpfBrowser_Loaded"
LoadCompleted="wpfBrowser_LoadCompleted" KeyUp="wpfBrowser_KeyUp">
</WebBrowser>
public void HideScriptErrors(WebBrowser wb, bool hide)
{
var fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
var objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null)
{
wb.Loaded += (o, s) => HideScriptErrors(wb, hide); //In case we are to early
return;
}
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
}
private void InjectAlertBlocker()
{
mshtml.HTMLDocument document = (mshtml.HTMLDocument)wpfBrowser.Document;
mshtml.IHTMLElement head = document.getElementsByTagName("head").Cast<mshtml.IHTMLElement>().First();
var script = (mshtml.IHTMLScriptElement)document.createElement("script");
string alertBlocker = "window.alert = function () { }";
((mshtml.HTMLHeadElement)head).appendChild((mshtml.IHTMLDOMNode)script);
}
private void wpfBrowser_Loaded(object sender, RoutedEventArgs e)
{
HideScriptErrors(wpfBrowser, true);
}
private void wpfBrowser_Navigated(object sender, NavigationEventArgs e)
{
try
{
InjectAlertBlocker();
}
catch (Exception ex)
{
NLog.Log(LogLevel.Error, ex, "Logs");
}
}