From 8180b465633df2c185c2601bc3c26ea7a2b53e5c Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Wed, 20 Nov 2019 10:25:15 +0000 Subject: [PATCH] [FIX] web, web_editor: improve browser support for JS lazy loading opw-2125858 closes odoo/odoo#41371 X-original-commit: d19982b7a22b04ab76c787b9adfffd24552eb5c0 Signed-off-by: Quentin Smetz (qsm) --- addons/web/static/src/js/public/lazyloader.js | 12 ++++++++---- .../static/src/js/frontend/loader_loading.js | 7 +++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/public/lazyloader.js b/addons/web/static/src/js/public/lazyloader.js index 4f8be8c2d65..8ca0948cde8 100644 --- a/addons/web/static/src/js/public/lazyloader.js +++ b/addons/web/static/src/js/public/lazyloader.js @@ -21,11 +21,13 @@ function waitLazy() { } waitingLazy = true; - document.querySelectorAll('.o_wait_lazy_js').forEach(function (element) { + var lazyEls = document.querySelectorAll('.o_wait_lazy_js'); + for (var i = 0; i < lazyEls.length; i++) { + var element = lazyEls[i]; blockEvents.forEach(function (evType) { element.addEventListener(evType, blockFunction); }); - }); + } } /** * Unblocks the DOM sections blocked by @see waitLazy and removes the related @@ -37,12 +39,14 @@ function stopWaitingLazy() { } waitingLazy = false; - document.querySelectorAll('.o_wait_lazy_js').forEach(function (element) { + var lazyEls = document.querySelectorAll('.o_wait_lazy_js'); + for (var i = 0; i < lazyEls.length; i++) { + var element = lazyEls[i]; blockEvents.forEach(function (evType) { element.removeEventListener(evType, blockFunction); }); element.classList.remove('o_wait_lazy_js'); - }); + } } // Start waiting for lazy loading as soon as the DOM is available diff --git a/addons/web_editor/static/src/js/frontend/loader_loading.js b/addons/web_editor/static/src/js/frontend/loader_loading.js index b5156944470..f5e8eda7dd6 100644 --- a/addons/web_editor/static/src/js/frontend/loader_loading.js +++ b/addons/web_editor/static/src/js/frontend/loader_loading.js @@ -10,7 +10,10 @@ */ document.addEventListener('DOMContentLoaded', () => { - document.querySelectorAll('textarea.o_wysiwyg_loader').forEach(textarea => { + // Standard loop for better browser support + var textareaEls = document.querySelectorAll('textarea.o_wysiwyg_loader'); + for (var i = 0; i < textareaEls.length; i++) { + var textarea = textareaEls[i]; var wrapper = document.createElement('div'); wrapper.classList.add('position-relative', 'o_wysiwyg_wrapper'); @@ -24,7 +27,7 @@ document.addEventListener('DOMContentLoaded', () => { textarea.parentNode.insertBefore(wrapper, textarea); wrapper.insertBefore(textarea, loadingElement); - }); + } }); })();