js 初始化给 audio 标签赋值 mp3 链接,然后 ios 获取 audio.duration为NaN
时间: 2024-04-04 07:35:13 浏览: 9
这个问题可能与iOS浏览器对自动播放的限制有关,iOS浏览器要求用户手动触发播放操作后才能获取音频的duration属性。你可以尝试在用户手动触发播放后再获取duration属性。你也可以在初始化时加入一些判断,如果是iOS浏览器,就不获取duration属性,而是等待用户手动触发播放后再获取。另外,你也可以尝试使用其他的音频播放库,如Howler.js或者SoundJS,它们可能能够更好地处理这个问题。
相关问题
js 初始化且是暂停状态下 ios 获取 audio.duration
在iOS浏览器中,如果音频处于暂停状态,也是无法获取音频的duration属性的。一种解决方法是,在用户手动触发播放时,暂停音频,然后再获取duration属性,之后再将音频继续暂停。你可以尝试使用以下代码:
```javascript
var audio = new Audio('audio.mp3');
audio.preload = 'metadata'; // 提前加载metadata信息
audio.addEventListener('loadedmetadata', function() {
console.log('Duration: ' + audio.duration);
audio.pause(); // 暂停音频
});
// 用户手动触发播放操作
document.addEventListener('touchstart', function() {
audio.play();
});
```
在上面的代码中,我们使用了`loadedmetadata`事件来获取音频的metadata信息,包括duration属性。在用户手动触发播放操作时,我们暂停了音频,然后获取duration属性,最后再将音频继续暂停。请注意,上述代码仅适用于iOS浏览器,对于其他浏览器可能会有不同的处理方式。
为什么派生类可以使用初始化列表给基类赋值
派生类可以使用初始化列表给基类赋值,是因为派生类在创建对象时,需要调用基类的构造函数来完成基类的初始化。初始化列表提供了一种在派生类构造函数中显式调用基类构造函数的方法,以确保基类的成员变量被正确地初始化。
通过初始化列表,派生类可以指定基类构造函数的参数,并将这些参数传递给基类的构造函数。这样,派生类在构造对象时就可以同时初始化基类的成员变量,而不需要在构造函数体内逐个赋值。
使用初始化列表给基类赋值可以提高代码的效率和可读性,尤其是当基类有多个成员变量需要初始化时。此外,通过初始化列表,派生类还可以调用基类的不同构造函数,根据需要选择合适的基类构造函数进行初始化。