音频不是以计时器开始的

时间:2014-06-02 14:23:53

标签: javascript html5 safari mobile-safari html5-audio

你好我的闹钟有点问题。 一切都在PC上正常工作,而移动(Safari)计时器被忽略。 这是脚本:

(function(){
    var audioElement = document.createElement('audio');
audioElement.setAttribute('src',
    'http://tx.sharp-stream.com/icecast.php?i=mos.mp3');
audioElement.load();
var alarmtime ;
var alarmseted = false;
var starttime = null;
var onehour = 1000*60*60;
$("#setalarm").click(function(){
        alarmtime = $("input").val();
  console.log(alarmtime);
  alarmsetted = true;
    });
$("#actual").click(function(){
        audioElement.pause();
  audioElement.currentTime=0;
    });
$("#StartCounting").click(function(){
        starttime = new Date();
    });
$("#StopCounting").click(function(){
        starttime = null;
    });
$("#textbox1").val( new Date(new Date().valueOf() + 1*60*1000).toLocaleTimeString());
setInterval(function(){
        var storage = $("#main");
      var date = new Date();
  var timestr = date.toLocaleTimeString();
  storage.html(timestr);
  if (alarmseted) {
            //storage.html(storage.html() +
        }if (alarmtime === timestr)
  {
            audioElement.play();
    alarmseted = false;
        }if (starttime!== null) {
            storage.html(storage.html() + "<br />" +(new Date(date-starttime-onehour)).toLocaleTimeString());
        //console.log((date-starttime));
        }
    },
    1000);
})();

问题是移动声音从一开始就播放,所以如果我参数播放一小时,闹铃响起就没有任何反应。

我尝试将audioElement.load ();置于条件if (AlarmTime === timestr) 但音乐无法启动,也没有任何反应。

1 个答案:

答案 0 :(得分:2)

如果没有用户的直接物理互动(例如ontouchstartonclick等),您无法在大多数移动浏览器中以编程方式播放音频/视频,因此无法实现您想要完成的任务。您可以做的最好的事情是在文档的任何位置侦听touchstart事件,在音频上调用play(),立即呼叫pause(),然后在再次播放音频之前等待闹钟。