我试图从另一个音频元素中自动启动下一个音频元素并遇到麻烦。
我的想法是我分配了一个功能,以及#34; onplay"每个音频元素的事件。此函数获取clicked元素的对象(this),检查某些条件,启动下一个函数并进一步将clicked元素的对象(this)传递给它。
function clickWrapper(triggeredObject) {
if (mode == 'normal') {
triggeredObject.onended = function() {playNextSong(triggeredObject)
}
}
下一个功能是尝试获取下一个元素的id,并将自己分配给" onended"下一个音频元素的事件,以实现所有元素的递归播放。
function playNextSong(NowPlayingSong) {
var nextSongId;
for (i = 0; i < playlist.length; i++) {
if (playlist[i] == NowPlayingSong.id) {
nextSongId = playlist[i+1];
};
};
var nextSong = document.getElementById(nextSongId);
nextSong.play();
nextSong.onended = function() {playNextSong(this)};
}
在PC上,下面的代码按预期工作。但问题是如何让它在Android Chrome上运行!因为根据我的意见,它不会触发这些事件。
也许所有&#34;解决方案&#34;是错的,但后来我不知道如何实现页面上所有音频元素的递归格式化。
您可以在novk.tk/audio
上测试此代码答案 0 :(得分:0)
知道了。 这是一个“用户控制”功能。
https://bugs.chromium.org/p/chromium/issues/detail?id=178297
要说一个玩家,我们需要一旦用户点击 - 在js中获取并保持此事件而不是松开它。使用单个程序流自行创建所有内容,而无需其他html元素交互。好难过。 :(
我的整个概念都变成了地狱。