According to https://github.com/MicrosoftEdge/WebView2Feedback/issues/1966 (which is a different issue), try an experimental workaround:
private void CoreWebView2_ScriptDialogOpening( object? sender, CoreWebView2ScriptDialogOpeningEventArgs e )
{
CoreWebView2Deferral d = e.GetDeferral();
Dispatcher.BeginInvoke( ( ) => ShowDialog( e, d ) );
}
void ShowDialog( CoreWebView2ScriptDialogOpeningEventArgs e, CoreWebView2Deferral d )
{
switch( e.Kind )
{
case CoreWebView2ScriptDialogKind.Alert:
MessageBox.Show( e.Message, "MyTitle", MessageBoxButton.OK, MessageBoxImage.Information );
break;
case CoreWebView2ScriptDialogKind.Confirm:
if( MessageBox.Show( e.Message, "MyTitle", MessageBoxButton.YesNo, MessageBoxImage.Question ) == MessageBoxResult.Yes )
{
e.Accept( );
}
break;
default:
MessageBox.Show( "Hi" );
break;
}
d.Complete();
webView.Focus();
}
If it works, it probably can be extended for other kinds of alerts. The flow can be simplified if the debugger is not detected.