我正在寻找解释为什么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;
}
}
}
答案 0 :(得分:1)
声明document.addEventListener('load'...
的Mozilla文档不正确(我已更新它们)。该事件不会在Edge,Chrome或Firefox中触发。
以下内容与您的问题无关,但可能会引起您的兴趣。
可以加载窗口,但音频文件尚不可用。您可能希望使用音频元素canplay
事件,该事件非常专门针对您想要执行的操作。