В этом сценарии единственный способ сообщить элементу <audio>
о начале игры - в конечном счете ... через Javascript.
Есть два способа; простой и не совсем простой.
(1) Простой способ с использованием встроенного JS:
<audio id="sound" src="/media/alert.wav" />
<button onclick="document.getElementById('sound').play()">Play through Javascript</button>
(2 ) Не совсем простой способ, вызывая событие через SignalR на серверном приложении, которое затем через SignalR отправляет обратно команду для вызова функции JS, которую необходимо предварительно создать в определенным образом:
<audio id="sound" src="/media/alert.wav" />
<button @onclick="@ClickHandler">Play through C#</button>
@code {
async void ClickHandler()
{
await JSRuntime.InvokeAsync<string>("PlaySound"); // this calls "window.PlaySound()"
}
}
Также создайте этот файл: /js/PlaySound.js
window.PlaySound = function() {
document.getElementById('sound').play();
}
Также отредактируйте этот файл: /Pages/_Host.cshtml
<head>
<!-- Various other tags -->
<script src="/js/PlaySound.js"></script>
</head>
Итог:
- Примите, что вам понадобится Javascript, чтобы делать подобные вещи.
- Не пытайтесь использовать Blazor для вызова JS, если только вам абсолютно не нужны вещи на стороне сервера, чтобы определить, будет ли вызываться код Javascript и / или как.