我想在发送事件时创建声音通知。如何防止它被浏览器阻止?
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);
}
});
1条答案
按热度按时间xqkwcwgp1#
您正在使用wav音频格式,尽管它与大多数浏览器兼容,但检查错误是否由音频格式引起始终是一个好主意。
为了防止阻止音频,最好在HTML页面中添加一个可见的音频控件(音频播放器),即使它是隐藏的。这样,浏览器将理解音频与可见媒体元素相关,并且不太可能阻止它。
另外,为用户提供启用或禁用声音通知的选项可能是有用的。这允许用户在其应用程序中控制音频。