| function loadScript(url, { doc = document }={}) { |
| return new Promise((resolve, reject) => { |
| const script = doc.createElement('script'); |
| script.onload = () => resolve(); |
| script.onerror = () => reject(Error("Script load failed")); |
| script.src = url; |
| doc.body.appendChild(script); |
| }) |
| } |
| |
| function preloadImage(url, { doc = document }={}) { |
| return new Promise((resolve, reject) => { |
| const preload = doc.createElement('link'); |
| preload.rel = 'preload'; |
| preload.as = 'image'; |
| preload.onload = () => resolve(); |
| preload.onerror = () => resolve(); |
| preload.href = url; |
| doc.body.appendChild(preload); |
| }) |
| } |
| |
| /** |
| * |
| * @param {Document} document |
| * @param {string|URL} url |
| * @returns {HTMLAudioElement} |
| */ |
| function appendAudio(document, url) { |
| const audio = document.createElement('audio'); |
| audio.muted = true; |
| audio.src = url; |
| audio.preload = true; |
| document.body.appendChild(audio); |
| return audio; |
| } |