javascript - 为什么 JavaScript .play() 不能在 iPhone safari 上播放音频文件?

标签 javascript ios iphone audio safari

我有一个 JavaScript 网络应用程序可以像这样定期播放一些音频:

var SOUND_SUCCESS = new Audio('success.mp3');
SOUND_SUCCESS.play();

这在桌面浏览器上运行良好(已在 Edge 和 Chrome 中测试),但无法在 iPhone 上的 Safari 上播放。

我查看了 Stack Overflow,发现了几年前的一些答案,除非您使用全屏播放器,否则无法从 Safari 播放音频。现在还是这样吗?

最佳答案

为了补充 xingliang cai 的回复,这是我为我工作的代码示例(在下面编辑以在 iOS14 上工作,感谢@AndrewL!):

const soundEffect = new Audio();
soundEffect.autoplay = true;

// onClick of first interaction on page before I need the sounds
// (This is a tiny MP3 file that is silent and extremely short - retrieved from https://bigsoundbank.com and then modified)
soundEffect.src = "data:audio/mpeg;base64,SUQzBAAAAAABEVRYWFgAAAAtAAADY29tbWVudABCaWdTb3VuZEJhbmsuY29tIC8gTGFTb25vdGhlcXVlLm9yZwBURU5DAAAAHQAAA1N3aXRjaCBQbHVzIMKpIE5DSCBTb2Z0d2FyZQBUSVQyAAAABgAAAzIyMzUAVFNTRQAAAA8AAANMYXZmNTcuODMuMTAwAAAAAAAAAAAAAAD/80DEAAAAA0gAAAAATEFNRTMuMTAwVVVVVVVVVVVVVUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zQsRbAAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zQMSkAAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV";

// later on when you actually want to play a sound at any point without user interaction
soundEffect.src = 'path/to/file.mp3';

关于javascript - 为什么 JavaScript .play() 不能在 iPhone safari 上播放音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776548/

相关文章:

javascript - (开源)JavaScript 原型(prototype) OO 示例

javascript - 正则表达式重复搜索而不 chop

javascript - knockout - foreach : Change button color on click

iOS 本地通知基于日期、时间范围和次数?

ios - 在 Swift 中找不到源文件

android - Appcelerator Titanium 或 PhoneGap 上的 iPhone 和 Android 应用程序

iphone - 如何检查是否有 performSelector : waiting to be executed?

javascript - 带按钮的 HTML 表单分配最后一个按钮的值,无论选择哪个按钮

ios - 使用 Xcode 8 和 watchOS3 配置 WatchKit 应用程序扩展

iphone - 在 tableviewcell 中设置文本标签的位置?