Skip to content

59naga/mock-audio-element

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MockAudioElement NPM version Build Status Coverage Status Climate Status

minimum implementation of HTML5 Audio events

Installation

$ npm install mock-audio-element --save

class Audio

(WIP) an unreal audio elements. dispatch few events and change the limited properties.

import Audio from 'mock-audio-element'

let audio= new Audio
console.log(audio)
// {
//   src: '',
//   loop: false,
//   autoplay: false,
//   paused: true,
//   ended: false,
//   error: null,
//   currentTime: 0,
//   duration: NaN
// }

If audio.src is true, to fetch the src.duration via http.

let audio= new Audio('http://static.edgy.black/fixture.mp3')
// or ...
let audio= new Audio
audio.src= 'http://static.edgy.black/fixture.mp3'
audio.addEventListener('canplaythrough',()=>{
  console.log(audio.duration) // 120.63985
})

If audio.autoplay is true(or .play()), to playback(simulation) until src.duration.

let audio= new Audio
audio.src= 'http://static.edgy.black/fixture.mp3'
audio.autoplay= true
audio.currentTime= 120

audio.addEventListener('timeupdate',()=>{
  console.log(audio.currentTime,audio.paused)
})
audio.addEventListener('ended',()=>{
  console.log(audio.currentTime,audio.paused)
})
// 120.104 false
// 120.205 false
// 120.308 false
// 120.412 false
// 120.514 false
// 120.616 false
// 120.63985 false
// 120.63985 true

But, if the src.loop is true, do repeat the playback.

let audio= new Audio
audio.src= fixtureURL
audio.autoplay= true
audio.currentTime= 120
audio.loop= true

audio.addEventListener('timeupdate',()=>{
  console.log(audio.currentTime,audio.paused)
})
// 120.1 false
// 120.203 false
// 120.304 false
// 120.404 false
// 120.507 false
// 120.611 false
// 120.64 false
// 0.104 false
// 0.209 false
// ...

There is a possibility to dispatch an following events only.

  • error
  • canplaythrough
  • play
  • pause
  • timeupdate
  • ended

In addition, only dispatch the event. nothing sends data.

audio.addEventListener('timeupdate',(data)=>{
  console.log(data)// undefined
})

License

MIT

About

(WIP) minimum implementation of HTML5 Audio events

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published