⛳
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