loadFromURL (url, { cache, noAlert } = {}) {
    return this.ready(() => {
      return new Promise((resolve, reject) => {
        fetch(url, { cache: cache ? 'force-cache' : 'no-cache' })
          .then((response) => {
            if (!response.ok) {
              if (noAlert) {
                reject(new Error('URLLoadFail'))
                return
              }
              seAlert(this.i18next.t('notification.URLLoadFail'))
              resolve()
            }
            return response.text()
          })
          .then((str) => {
            this.loadSvgString(str, { noAlert })
            resolve(str)
          })
          .catch((error) => {
            if (noAlert) {
              reject(new Error('URLLoadFail'))
              return
            }
            seAlert(
              this.i18next.t('notification.URLLoadFail') + ': \n' + error
            )
            resolve()
          })
      })
    })
  }
@function module:SVGthis.loadFromURL
@param {string} url URL from which to load an SVG string via Ajax
@param {PlainObject} [opts={}] May contain properties: `cache`, `callback`
@param {boolean} [opts.cache]
@param {boolean} [opts.noAlert]
@returns {Promise<void>} Resolves to `undefined` or rejects upon bad loading of
  the SVG (or upon failure to parse the loaded string) when `noAlert` is
  enabled