diff --git a/ext/bg/js/audio-downloader.js b/ext/bg/js/audio-downloader.js index ddddfe18..839eab7b 100644 --- a/ext/bg/js/audio-downloader.js +++ b/ext/bg/js/audio-downloader.js @@ -109,7 +109,7 @@ class AudioDownloader { }); const responseText = await response.text(); - const dom = new NativeSimpleDOMParser(responseText); + const dom = this._createSimpleDOMParser(responseText); for (const row of dom.getElementsByClassName('dc-result-row')) { try { const audio = dom.getElementByTagName('audio', row); @@ -149,7 +149,7 @@ class AudioDownloader { }); const responseText = await response.text(); - const dom = new NativeSimpleDOMParser(responseText); + const dom = this._createSimpleDOMParser(responseText); try { const audio = dom.getElementById(`audio_${expression}:${reading}`); if (audio !== null) { @@ -237,4 +237,12 @@ class AudioDownloader { _arrayBufferToBase64(arrayBuffer) { return btoa(String.fromCharCode(...new Uint8Array(arrayBuffer))); } + + _createSimpleDOMParser(content) { + if (NativeSimpleDOMParser.isSupported()) { + return new NativeSimpleDOMParser(content); + } else { + throw new Error('DOM parsing not supported'); + } + } } diff --git a/ext/bg/js/native-simple-dom-parser.js b/ext/bg/js/native-simple-dom-parser.js index 2aa4134d..4e0d89ea 100644 --- a/ext/bg/js/native-simple-dom-parser.js +++ b/ext/bg/js/native-simple-dom-parser.js @@ -43,4 +43,8 @@ class NativeSimpleDOMParser { getTextContent(element) { return element.textContent; } + + static isSupported() { + return typeof DOMParser !== 'undefined'; + } }