document.addEventListener不使用load事件

时间:2016-08-10 22:15:19

标签: javascript addeventlistener

我正在寻找解释为什么window.addEventListener适用于以下脚本而不是document.addEventListener。我已经查看了load EventTarget事件的MSN docs,我可以从中收集它应该有效。此外,this堆栈溢出答案在某一点上是有用的,但鉴于我对上面链接的MSN文档的理解,我仍然感到困惑。这主要是因为没有引用窗口是唯一可用的function audioPlayer(){ // Create vars var audio = new Audio('https://s3-us-west-2.amazonaws.com/s.cdpn.io/336102/mpthreetest.mp3'); var btn = document.getElementsByClassName('dial-a')[0]; // Create event listener btn.addEventListener('click', playPause); // Play Pause function function playPause(){ // If audio paused then play on click if(audio.paused){ audio.play(); } // Else audio playing then pause on click else { audio.pause(); } } } // document.addEventListener doesn't work for some reason window.addEventListener('load', audioPlayer, false);

该脚本是个人项目的一部分,用于创建记录播放器。单击按钮播放歌曲,再次单击并暂停,依此类推。没有什么太花哨但它也在我目前的技术水平的极限,所以任何建议都表示赞赏。

private IEnumerable<FileInfo> GetUniqueFilesWithoutExtension(IEnumerable<FileInfo> list1, IEnumerable<FileInfo> list2)
{
    var d = new HashSet<string>();
    foreach (var fi in list2)
    {
        d.Add(Path.GetFileNameWithoutExtension(fi.FullName));
    }

    foreach (var fi in list1)
    {
        if (!d.Contains(Path.GetFileNameWithoutExtension(fi.FullName)))
        {
            yield return fi;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

声明document.addEventListener('load'...的Mozilla文档不正确(我已更新它们)。该事件不会在Edge,Chrome或Firefox中触发。

以下内容与您的问题无关,但可能会引起您的兴趣。

可以加载窗口,但音频文件尚不可用。您可能希望使用音频元素canplay事件,该事件非常专门针对您想要执行的操作。