如何在SwalFire(SweetAlert)弹出框中实现音频播放功能
完全可以实现该效果,你可以借助SweetAlert2提供的didOpen生命周期钩子,在弹窗触发渲染的同时播放音频,无需额外植入音频文件到弹窗结构中,实现逻辑非常简单。
修改后的示例代码如下:
// 提前定义好音频文件地址,替换成你自己的音效路径即可 const notifyAudio = new Audio('/audio/notify.mp3'); Swal.fire({ title: 'Custom width, padding, background.', width: 600, padding: '3em', background: '#fff url(/images/trees.png)', backdrop: ` rgba(0,0,123,0.4) url("/images/nyan-cat.gif") left top no-repeat `, // 新增弹窗打开后的回调,触发音频播放 didOpen: () => { notifyAudio.play().catch(err => { // 可在这里处理播放失败的场景,比如浏览器拦截自动播放 console.log('音频播放失败:', err) }); } })
相关注意事项:
- 受浏览器自动播放策略限制,如果弹窗是页面加载后主动弹出、没有用户交互行为触发的话,音频播放可能会被浏览器拦截,若弹窗是用户点击、输入等交互动作触发的则不存在该问题。
- 如果你需要把音频控件展示在弹窗内供用户手动控制,可以在配置项中新增
html字段植入<audio>标签,示例如下:
Swal.fire({ title: '带音频的弹窗', // 直接植入带自动播放属性的audio标签,也可以加上controls属性显示控件 html: '<audio src="/audio/notify.mp3" autoplay controls />', // 其他原有配置保持不变即可 })
内容的提问来源于stack exchange,提问作者DonVino
相关产品推荐
相关产品推荐

