提问者:小点点

如何在JavaScript中不使用触发器每秒播放声音[duplicate]


原关闭原因未解决

我想播放音频每秒钟,因为它是时钟,所以想插入滴答声。

有没有办法在没有触发器的情况下实现这一点,因为时钟应该始终是自动的。

下面是在触发器上运行的代码:

<audio id="audiotag1" src="Sounds\clock tick.mp3" preload="metadata" controls></audio>
<button onclick="trigger()">Start</button>
function trigger(){
setInterval(clockRunner, 1000);
  function clockRunner(){
    var audioElement = document.getElementById('audiotag1');
    audioElement.play();
  }
}

下面是没有触发器但未运行的代码:

setInterval(clockRunner, 1000);

function clockRunner() {
  var audioElement = document.getElementById('audiotag1');
  audioElement.play();
}
<audio id="audiotag1" src="Sounds\clock tick.mp3" preload="metadata" controls></audio>

错误显示为:
未捕获DomeException:play()失败,因为用户没有首先与文档交互。

这里的问题是指问题(错误),但提供的解决方案是针对视频的,它们可以静音播放,并具有可视内容

提前谢谢你的帮助


共3个答案

匿名用户

您不能使用文档。getElementById(音频元素)和js一起使用,只需使用它和。玩,这不管用,但这应该

function play() {
var audio = new Audio('Sounds\clock tick.mp3');
audio.play();
}
setInterval(play, 1000)

在字符串中,只需使用源代码。:)

匿名用户

我想说这值得一试

<audio id="audiotag1" preload="metadata" controls>
<source src="Sounds\clock tick.mp3" type="audio/mpeg"> 
</audio>
<button onclick="triger()">Start</button>

还想提到你有一个类型,上面写着audioElement。播放时,您会添加一个额外的空间,使其成为音频元素。可能会引发错误的播放。

匿名用户

看起来有一个相关的帖子出现了。(来源:https://stackoverflow.com/a/62720714/9303612)

几周前,我尝试了你想要做的事情,然而,经过大量的研究,我意识到现在这几乎是不可能的。例如,在Chrome中(我不知道是否也在其他浏览器中),您无法自动播放声音/视频,除非完成以下几点之一:

  • 用户与您的网站交互(点击您网站的任何部分)。
  • 用户将您的网站添加到主屏幕(移动)。
  • 用户已越过媒体交互指数(MEI)阈值。
  • 您的网站在自动播放的谷歌白名单中(如YouTube)。