⛳
Blazor Hybrid で F5 キーでリフレッシュなどのブラウザ固有のキー操作を無効化したい
Blazor Hybrid では BlazorWebView
をネイティブの画面に埋め込んでいます。この BlazorWebView
ですが Windows の場合はブラウザと同じように F5
キーで画面がリフレッシュされたりといったブラウザ固有のキー操作が有効になっています。場合によっては、この操作を無効化したくなると思います。今回はこの操作を無効化する方法について紹介します。
因みに、今回の内容ですが Windows 以外の場合では確認できていません。
BlazorWebView
では、WebView2
が内部で使われています。この WebView2
では F5
キーなどのキーを無効化にするオプションがあります。Blazor Hybrid で、この WebView2
が生成された直後にアクセスするには BlazorWebView
コントロールの BlazorWebViewInitialized
イベントを使用します。以下のように XAML で指定すると簡単だと思います。コードビハインドでやっても大丈夫です。
<blazor:BlazorWebView
x:Name="blazorWebView"
BlazorWebViewInitialized="BlazorWebViewInitialized"
HostPage="wwwroot/index.html"
Services="{x:Static local:App.ServiceProvider}">
<blazor:BlazorWebView.RootComponents>
<blazor:RootComponent ComponentType="{x:Type local:Routes}" Selector="#app" />
</blazor:BlazorWebView.RootComponents>
</blazor:BlazorWebView>
BlazorWebViewInitialized
イベントのイベント引数の BlazorWebViewInitializedEventArgs
の WebView
プロパティで WebView2
のインスタンスにアクセスできます。
WebView2
の CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled
に false
を設定するとブラウザ固有のキー操作を無効化できます。以下のようなコードになります。
private void BlazorWebViewInitialized(object sender, BlazorWebViewInitializedEventArgs e)
{
// F5 キーなどを無効化する
e.WebView.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false;
}
Discussion