DevEjectionSeat.razor 886 B

12345678910111213141516171819202122232425262728293031323334353637
  1. @inject IJSRuntime JS
  2. @if (_isRunning)
  3. {
  4. @ChildContent
  5. }
  6. else
  7. {
  8. <h1 class="loading">Dev Ejection Seat Working</h1>
  9. }
  10. @code
  11. {
  12. [Parameter]
  13. public RenderFragment? ChildContent { get; set; }
  14. private IJSObjectReference? module;
  15. private bool _isRunning = true;
  16. protected override async Task OnAfterRenderAsync(bool firstRender)
  17. {
  18. await base.OnAfterRenderAsync(firstRender);
  19. if (firstRender == false) return;
  20. module = await JS.InvokeAsync<IJSObjectReference>("import", "./Gui/MudIse/DevEjectionSeat.razor.js");
  21. await module.InvokeVoidAsync("SetBeforeUnloadEventHandler", DotNetObjectReference.Create(this), nameof(BeforeUnloadEventHandler));
  22. }
  23. [JSInvokable]
  24. public void BeforeUnloadEventHandler()
  25. {
  26. if (_isRunning == false) return;
  27. _isRunning = false;
  28. StateHasChanged();
  29. }
  30. }