diff options
| -rw-r--r-- | ext/bg/js/audio-downloader.js | 12 | ||||
| -rw-r--r-- | ext/bg/js/native-simple-dom-parser.js | 4 | 
2 files changed, 14 insertions, 2 deletions
| 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'; +    }  } |