diff --git a/react/features/base/lib-jitsi-meet/native/polyfills-browser.js b/react/features/base/lib-jitsi-meet/native/polyfills-browser.js index 12ef0ade8..381c5a0d8 100644 --- a/react/features/base/lib-jitsi-meet/native/polyfills-browser.js +++ b/react/features/base/lib-jitsi-meet/native/polyfills-browser.js @@ -143,11 +143,49 @@ function _visitNode(node, callback) { const elementPrototype = Object.getPrototypeOf(document.documentElement); - if (elementPrototype - && typeof elementPrototype.querySelector === 'undefined') { - elementPrototype.querySelector = function(selectors) { - return _querySelector(this, selectors); - }; + if (elementPrototype) { + if (typeof elementPrototype.querySelector === 'undefined') { + elementPrototype.querySelector = function(selectors) { + return _querySelector(this, selectors); + }; + } + + // Element.innerHTML + // + // Required by: + // - jQuery's .append method + if (!elementPrototype.hasOwnProperty('innerHTML')) { + Object.defineProperty(elementPrototype, 'innerHTML', { + get() { + return this.childNodes.toString(); + }, + + set(innerHTML) { + // MDN says: removes all of element's children, parses + // the content string and assigns the resulting nodes as + // children of the element. + + // Remove all of element's children. + this.textContent = ''; + + // Parse the content string. + const d + = new DOMParser().parseFromString( + `