UNPKG

abcjs

Version:

Renderer for abc music notation

29 lines (22 loc) 1.13 kB
var activeAudioContext = require('./active-audio-context'); // // Support for audio depends on three things: support for Promise, support for AudioContext, and support for AudioContext.resume. // Unfortunately, AudioContext.resume cannot be detected unless an AudioContext is created, and creating an AudioContext can't // be done until a user click, so there is no way to know for sure if audio is supported until the user tries. // We can get close, though - we can test for Promises and AudioContext - there are just a few evergreen browsers that supported // that before supporting resume, so we'll test what we can. // The best use of this routine is to call it before doing any audio related stuff to decide whether to bother. // But then, call it again after a user interaction to test for resume. function supportsAudio() { if (!window.Promise) return false; if (!window.AudioContext && !window.webkitAudioContext && !navigator.mozAudioContext && !navigator.msAudioContext) return false; var aac = activeAudioContext(); if (aac) return aac.resume !== undefined; } module.exports = supportsAudio;