laravel 播放声音而无需用户交互JS

s8vozzvw  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(90)

我想在发送事件时创建声音通知。如何防止它被浏览器阻止?

window.userId = {{ auth()->user()->user_id }};
const channelName = `laravel_database_chat.${window.userId}`;
const messageSound = new Audio('{{ asset('clients/assets/mp3/press.wav') }}');

function playAudio() {
  messageSound.play();
}

window.Echo.channel(channelName).listen('.MessageEvent', (data) => {
  console.log(data)
  if (data.receiverId === window.userId) {
    Livewire.dispatch('chat');
    setTimeout(() => {
      playAudio();
    }, 1000);
  }
});
xqkwcwgp

xqkwcwgp1#

您正在使用wav音频格式,尽管它与大多数浏览器兼容,但检查错误是否由音频格式引起始终是一个好主意。
为了防止阻止音频,最好在HTML页面中添加一个可见的音频控件(音频播放器),即使它是隐藏的。这样,浏览器将理解音频与可见媒体元素相关,并且不太可能阻止它。
另外,为用户提供启用或禁用声音通知的选项可能是有用的。这允许用户在其应用程序中控制音频。

相关问题